如何将权限分配给ApplicationPoolIdentity帐户

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

如何为这个“ApplicationPoolIdentity”帐户分配权限。 它不在本机上显示为本地用户。 它不会在任何地方出现。 没有任何东西在任何地方出现。 当我浏览本地用户,组和内置帐户时,它不会出现在列表中,也不会出现在列表中。 到底是怎么回事?

我不是唯一有这个问题的人:例如,请参阅IIS 7.5 + Windows 7中的ApplicationPoolIdentity问题。


“不幸的是,这是Windows Server 2008 / Windows Vista上的对象select器的一个限制,因为有几个人已经发现它,所以仍然可以使用像icacls这样的命令行工具来操纵应用程序池标识的ACL。

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

IIS APPPOOL\{app pool name} 

注意:下面的评论有两点需要注意:

  • 直接inputstring到“select用户或组”,而不是在search字段。
  • 在域环境中,您需要首先将“位置”设置为本地计算机。

原始响应:(对于Windows Server 2008)这是一个很棒的function,但正如你所提到的,它还没有完全实现。 您可以从命令提示符中添加类似于icacls的应用程序池标识,然后您可以从GUI进行pipe理。 例如,从命令提示符运行如下所示:

 icacls c:\inetpub\wwwroot /grant "IIS APPPOOL\DefaultAppPool":(OI)(CI)(RX) 

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

但是,你根本不需要使用它。 这是一个奖金,你可以使用,如果你想。 您可以使用旧的方式为每个应用程序池创build自定义用户,并将自定义用户分配给磁盘。 这有完整的用户界面支持。

这种SID注入方法非常好,因为它允许您使用单个用户,但可以将每个站点彼此完全隔离,而无需为每个应用程序池创build唯一的用户。 令人印象深刻,用户界面支持会更好。

名为Application Host Helper Service的Windows服务是执行IIS和Windows用户之间映射的服务。

您必须确保“从此位置”字段设置为本地计算机,而不是域。

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

你应该真正的为每个“angular色”创build组,并在文件系统上分配这个组访问。 然后根据需要将应用程序池添加到特定于angular色的组。 这样,即使您稍后再删除应用程序池(并且虚拟用户也不用担心),您不必担心重做所有权限,只需将replace应用程序池添加到现有组中即可。

阅读@Scott Forsyth – MVP答案后,我尝试重新启动应用程序主机帮助程序服务。 这解决了我的问题。

我正在运行WS8 R2,无法通过Windows资源pipe理器添加IIS APPPOOL\DefaultAppPool 。 唯一的办法是通过命令行:

cacls [文件path] / T / E / G“IIS APPPOOL \ DefaultAppPool”:C

如果这个问题是关于如何在msdb数据库中执行_sp_send_dbmail(使用msdb中的SQL发送数据库邮件存储过程),这里有一些解决方法。 将数据库的.net应用程序用户名(在.net应用程序的连接string中定义)添加到具有“DatabaseMailUserRole”angular色成员资格的msdb用户