我正在通过 FastCGI 运行带有 PHP(各种版本)的 IIS 8.5。在 FastCGI 的 PHP 配置中启用了模拟。应用程序池设置为使用应用程序池标识。事实上,如果我实际上明确拒绝对文件的写入权限,它会相应地运行,但是,默认情况下,似乎所有文件都可以写入我的网站。
查看有效权限表明我的应用程序池标识 (IIS AppPool\PoolName) 根本不应分配任何权限。应用程序池标识是否继承了某个默认帐户,我需要调整该帐户以默认阻止写入访问。我读到的所有内容似乎都表明应用程序池标识应该默认只对应用程序分配到的虚拟文件夹具有读取访问权限,但这与观察到的行为不符(具体来说,PHPBB3 抱怨配置文件是可写的,无需专门设置写入权限,我就可以通过论坛上传文件)。
什么可能会干扰权限,或者我对预期的默认行为的理解不正确?
答案1
我做了更多调查,终于找到了答案。似乎有一个设置使文件可修改为“经过身份验证的用户”。打破继承并删除此权限解决了这个问题。
显然,它包含在用户组和经过身份验证的用户组中,以确保它有权加载 dll 等。我发现这个答案因此,这对于理解这一点非常有帮助。