在 Windows Server 2008 上的 IIS 7 中,应用程序池可以作为“ApplicationPoolIdentity”帐户而不是 NetworkService 帐户运行。
我如何为这个“ApplicationPoolIdentity”帐户分配权限。它没有作为计算机上的本地用户出现。它没有作为任何地方的组出现。任何地方都没有出现任何与它相似的东西。当我浏览本地用户、组和内置帐户时,它没有出现在列表中,列表中也没有出现任何类似的东西。发生了什么?
我不是唯一一个有这个问题的人:见关于iis:IIS 7.5 + Windows 7中的ApplicationPoolIdentity问题举个例子。
“不幸的是,这是 Windows Server 2008/Windows Vista 上对象选择器的一个限制 - 正如一些人已经发现的那样,你仍然可以使用命令行工具来操作应用程序池身份的 ACL,例如伊卡克尔斯“”。
答案1
更新:最初的问题是针对 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}
注意:根据以下评论,有两件事需要注意:
- 直接在“选择用户或组”中输入字符串,而不是在搜索字段中输入。
- 在域环境中您需要先将位置设置为本地计算机。
参考 Microsoft Docs 文章:应用程序池标识 > 保护资源
原始回应:(适用于 Windows Server 2008)这是一个很棒的功能,但正如您所说,它尚未完全实现。您可以使用 icacls 之类的命令从命令提示符添加应用程序池标识,然后可以从 GUI 管理它。例如,从命令提示符运行如下命令:
icacls c:\inetpub\wwwroot /grant "IIS APPPOOL\DefaultAppPool":(OI)(CI)(RX)
然后,在 Windows 资源管理器中,转到 wwwroot 文件夹并编辑安全权限。您将看到一个名为 DefaultAppPool 的组(组图标)。您现在可以编辑权限。
但是,您根本不需要使用它。如果您愿意,这是一个可以使用的额外功能。您可以使用旧方法,为每个应用程序池创建自定义用户,并将自定义用户分配给磁盘。该方法具有完整的 UI 支持。
这种 SID 注入方法很不错,因为它允许您使用单个用户,但完全隔离各个站点,而无需为每个应用程序池创建唯一用户。非常令人印象深刻,如果支持 UI,效果会更好。
注意:如果您无法找到应用程序池用户,请检查名为 Application Host Helper Service 的 Windows 服务是否正在运行。该服务将应用程序池用户映射到 Windows 帐户。
答案2
您必须确保将From this location
字段设置为local machine
而不是域。
我遇到了同样的问题,一旦我改变它,它就可以正常工作。
答案3
您实际上应该为每个“角色”创建组,并分配该组对文件系统的访问权限。然后根据需要将应用程序池添加到特定于角色的组中。这样,即使您稍后删除应用程序池(并且虚拟用户噗——),您不必担心重新设置所有权限,只需将替换应用程序池添加到现有组即可。
答案4
我运行的是 WS8 R2,无法IIS APPPOOL\DefaultAppPool
通过 Windows 资源管理器添加。唯一可行的方法是通过命令行:
cacls [文件路径] /T /E /G “IIS APPPOOL\DefaultAppPool”:C