我在 GoDaddy 专用托管账户中全新安装了 Windows 2008 Standard。我将安装升级到了 SP2。
多个应用程序正在 IIS 中运行,这些应用程序位于使用“NetworkService”作为池标识的应用程序池中。我正在通过互联网匿名访问这些应用程序。
与 Windows 2003 不同,这似乎是一个高权限帐户。我发现我的应用程序对磁盘上的每个目录都有读取权限。我通过在 IIS 中创建一个简单的应用程序来验证这一点,该应用程序读取任意目录的内容并打印它遇到的第一个文本文件的内容。这对我尝试过的每个文件夹都有效,包括 C:\Windows\System32。但是,写入尝试失败。
我的直觉告诉我这不可能是正确的行为,但我的 Win2k8-fu 不够强。
我看到的情况正常吗?我应该使用不同的身份运行应用程序池吗?
答案1
你看到的是正常。“网络服务”帐户相当于本地系统帐户,这是一个非常有特权的帐户。如果我没记错的话,网络服务与本地服务或系统不同,因为它在域环境中可以访问远程计算机上的资源;分配给机器帐户的权限限制了它在域上可以看到的内容。
IIS7 应用程序使用的帐户由支持应用程序池使用的帐户定义。
“ApplicationPoolIdentity” 是 IIS7 的一项新功能。有关设置该权限的详细信息,请参阅涵盖此内容的 serverfault 问题 (关联)。最安全的方法是在该框上为应用程序池创建一个自定义用户,并为该用户分配权限。
要进入上面的下拉屏幕:
- 打开 IIS 管理器。
- 打开应用程序池。
- 选择有问题的应用程序池。
- 在右侧框架中,选择“高级设置”
- 在“流程模型”下,您将找到“身份”。这是下拉菜单所在的位置。