我有一个在默认应用程序池中的 IIS 10 上运行的站点。
我需要授予它读取(Windows)docker 容器中文件夹树的权限。
如何仅使用 CLI 来确定需要授予哪些用户权限才能访问文件夹?
我试过了:
icacls "C:\inetpub\MyWebsite" /grant "IIS AppPool\DefaultAppPool":(OI)(CI)F
icacls "C:\inetpub\MyWebsite" /grant "IIS AppPool\MyWebsite":(OI)(CI)F
icacls "C:\inetpub\MyWebsite" /grant "ApplicationPoolIdentity ":(OI)(CI)F
(错误:未完成帐户名与安全 ID 之间的映射。)icacls "C:\inetpub\MyWebsite" /grant "Network Service":(OI)(CI)F
icacls "C:\inetpub\MyWebsite" /grant "IIS_IUSRS":(OI)(CI)F
答案1
是的,不确定 IIS 应用程序在哪个用户下运行。这是一个糟糕的想法,您想创建安全池而不是打击应用程序轮询访问下的所有内容。
应该这样做:
- 在虚拟机上创建新用户
- 将新用户分配到应用程序投票
- 授予用户从 IIS 读取您想要访问的所有目录的权限
执行我将使用的步骤电源外壳
Import-Module WebAdministration
Set-ItemProperty IIS:\AppPools\$($pool.name) -name processModel -value @{userName="$($creds.UserName)";password="$($creds.GetNetworkCredential().Password)";identitytype=3}
答案2
为 IUSR 帐户添加读取(非完全)权限。或者告诉 IIS 不要使用 IUSR 进行匿名访问:
Set-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST' -location 'SiteName' -filter "system.webServer/security/authentication/anonymousAuthentication" -name "userName" -value ""
将 SiteName 替换为您的站点名称。