如何为 ApplicationPoolIdentity 帐户分配权限

Tri*_*nko 273 windows-server-2008 iis-7 application-pools

在 Windows Server 2008 上的 IIS 7 中,应用程序池可以作为“ApplicationPoolIdentity”帐户而不是 NetworkService 帐户运行。

如何为此“ApplicationPoolIdentity”帐户分配权限。它不会在机器上显示为本地用户。它不会在任何地方显示为一个组。没有什么像它出现在任何地方的远程。当我浏览本地用户、组和内置帐户时,它没有出现在列表中,列表中也没有出现任何类似的内容。到底是怎么回事?

我不是唯一遇到此问题的人:请参阅IIS 7.5 + Windows 7中的ApplicationPoolIdentity问题示例。


“不幸的是,这是 Windows Server 2008/Windows Vista 上的对象选择器的一个限制——正如一些人已经发现的那样,您仍然可以使用icacls等命令行工具操作应用程序池标识的 ACL 。”

Sco*_*MVP 300

更新:最初的问题是针对 Windows Server 2008,但对于 Windows Server 2008 R2 和 Windows Server 2012(以及 Windows 7 和 8),解决方案更容易。您可以通过 NTFS UI 直接键入来添加用户。名称的格式为 IIS APPPOOL\{应用程序池名称}。例如:IIS APPPOOL\DefaultAppPool。

IIS APPPOOL\{app pool name}
Run Code Online (Sandbox Code Playgroud)

注意:根据下面的评论,有两件事需要注意:

  • 直接在“选择用户或组”中而不是在搜索字段中输入字符串。
  • 在域环境中,您需要先将位置设置为本地计算机。

参考 Microsoft Docs 文章:应用程序池标识 > 保护资源

原始回复:(对于 Windows Server 2008)这是一个很棒的功能,但正如您提到的,它还没有完全实现。您可以使用 icacls 之类的命令从命令提示符添加应用程序池标识,然后您可以从 GUI 管理它。例如,从命令提示符运行这样的事情:

icacls c:\inetpub\wwwroot /grant "IIS APPPOOL\DefaultAppPool":(OI)(CI)(RX)
Run Code Online (Sandbox Code Playgroud)

然后,在 Windows 资源管理器中,转到 wwwroot 文件夹并编辑安全权限。您将看到一个名为 DefaultAppPool 的组(组图标)。您现在可以编辑权限。

但是,您根本不需要使用它。如果您愿意,您可以使用它。您可以使用旧方法为每个应用程序池创建自定义用户并将自定义用户分配到磁盘。它具有完整的 UI 支持。

这种 SID 注入方法很好,因为它允许您使用单个用户但将每个站点彼此完全隔离,而不必为每个应用程序池创建唯一用户。非常令人印象深刻,如果有 UI 支持,效果会更好。

注意:如果找不到应用程序池用户,请检查名为 Application Host Helper Service 的 Windows 服务是否正在运行。它是将应用程序池用户映射到 Windows 帐户的服务。

  • 请注意,如果在编辑权限时直接在“选择用户或组”中输入“IIS APPPOOL\DefaultAppPool”(而不是搜索它),它将被很好地识别(在 Win7 x64 和 Win2k8 R2 x64 上测试)。 (29认同)
  • 终于明白了 - 如果你像@Milan Gardian 上面所说的那样直接输入应用程序池名称*并且*将位置字段更改为本地机器,那么它就可以工作了 (9认同)
  • 你对 Win7 和 Win2k8 R2 是正确的。它没有在 Win2k8 RTM 中实现,而是在 R2 中实现。 (5认同)
  • 非常感谢您提出的“需要注意的两件事”。我在这两个方面都磕磕绊绊,这是对问题以及如何实现我所需要的一个清晰而简单的解释。遗憾的是,没有任何 MSDN 文档如此清楚。 (4认同)

小智 24

您必须确保该From this location字段设置为 thelocal machine而不是域。

我有同样的问题,一旦我改变它就可以正常工作。