为应用程序池身份分配文件夹权限(仅限 CLI)

为应用程序池身份分配文件夹权限(仅限 CLI)

我有一个在默认应用程序池中的 IIS 10 上运行的站点。

我需要授予它读取(Windows)docker 容器中文件夹树的权限。

如何仅使用 CLI 来确定需要授予哪些用户权限才能访问文件夹?

我试过了:

  1. icacls "C:\inetpub\MyWebsite" /grant "IIS AppPool\DefaultAppPool":(OI)(CI)F
  2. icacls "C:\inetpub\MyWebsite" /grant "IIS AppPool\MyWebsite":(OI)(CI)F
  3. icacls "C:\inetpub\MyWebsite" /grant "ApplicationPoolIdentity ":(OI)(CI)F (错误:未完成帐户名与安全 ID 之间的映射。)
  4. icacls "C:\inetpub\MyWebsite" /grant "Network Service":(OI)(CI)F
  5. icacls "C:\inetpub\MyWebsite" /grant "IIS_IUSRS":(OI)(CI)F

答案1

是的,不确定 IIS 应用程序在哪个用户下运行。这是一个糟糕的想法,您想创建安全池而不是打击应用程序轮询访问下的所有内容。

应该这样做:

  1. 在虚拟机上创建新用户
  2. 将新用户分配到应用程序投票
  3. 授予用户从 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 替换为您的站点名称。

相关内容