【发布时间】:2013-10-23 20:27:38
【问题描述】:
我正在尝试为在 IIS 7 上运行的 Web 应用程序设置权限,以便其他 Web 应用程序无法访问它。
我首先将它设置为在我自己命名为 MyAppsPoolName2 的应用程序池下运行,命名为 ApplicationPoolIdentity:
启用匿名身份验证并设置为使用应用程序池身份:
之后我这样配置 ACL 权限:
我的 Web 应用程序的根文件夹:“C:\inetpub\www_test1”设置了以下权限:
- 允许 FILE_GENERIC_READ 到
IIS AppPool\MyAppsPoolName2 - 拒绝 FILE_ALL_ACCESS 到
IUSR - 拒绝 FILE_ALL_ACCESS 到
IIS_IUSRS
所以在 IIS 中安装并启动我的网站后,我收到以下错误:
HTTP 错误 500.19 - 内部服务器错误 无法访问请求的页面 访问,因为该页面的相关配置数据是 无效。
知道如何解决这个问题吗?
【问题讨论】:
-
错误信息中的web.config文件是否有你列出的权限?您能否显示 ACL 的 PowerShell 输出,例如:
PS > Get-Acl C:\Inetpub\www_test1 | fl另外,如果您删除 DENY 权限,它会起作用吗? (我相信 AppPoolIdentities 是 IIS_IUSRS 组的一部分,并且 DENY 优先于 ALLOW) -
@dirt:我不认为 web.config 与它有任何关系。如屏幕截图所示,它甚至无法读取。所以我不知道你会如何在 web.config 中列出这些权限?至于 powershell 输出然后我得到一个错误,
Get-Process : Cannot find a process with the name "C:\Inetpub\www_test1". Verify the process name and call the cmdlet again. -
@dirt:是的,如果我同时删除
deny权限,它工作得很好——但这违背了我想要实现的目的...... -
那是你的问题;由于组拒绝条目按预期工作,appPool 无权读取您的文件(它开始通过读取您的 web.config 文件,因此该文件列在您提供的错误屏幕截图中)。您可能需要重新考虑您要完成的工作。
标签: asp.net security iis iis-7 permissions