IIS7权限概述- ApplicationPoolIdentity

我们最近升级到IIS7作为核心web服务器,我需要一个权限方面的概述。以前,当需要写入文件系统时,我会给AppPool用户(网络服务)访问目录或文件的权限。

在IIS7中我看到,默认情况下,AppPool用户被设置为ApplicationPoolIdentity。因此,当我检查任务管理器时,我看到一个名为WebSite.example的用户帐户正在运行IIS进程('Website.example'是IIS中的网站名称)

但是,如果我尝试使用该用户帐户来授予权限,则该用户帐户不存在。那么,我如何确定哪个用户也给予权限呢?

请看下面的屏幕截图中的问题。我们的网站(www.silverchip.co.uk)以用户名SilverChip.co.uk运行。但是当我添加权限时,这个用户不存在!

< img src = " https://i.stack.imgur.com/K89uH.png " alt = " / >

请看appool图片:

< img src = " https://i.stack.imgur.com/70AHp.png " alt = " / >

437283 次浏览

ApplicationPoolIdentity实际上是IIS7+中使用的最佳实践。这是一个动态创建的、无特权的帐户。要为特定的应用程序池添加文件系统安全性,请参阅IIS.net的“应用程序池标识”。快速版本:

如果应用程序池命名为“DefaultAppPool”(如果命名不同,只需替换下面的文本)

  1. 打开Windows资源管理器
  2. 选择文件或目录。
  3. 右键点击文件,选择“属性”
  4. 选择“Security”选项卡
  5. 点击“编辑”,然后点击“添加”按钮
  6. 点击“位置”按钮,确保你选择了当地的机器。( Windows域,如果服务器属于Windows域。)
  7. 在“输入要选择的对象名称:”文本框中输入“IIS AppPool \ DefaultAppPool”。(不要忘记在这里将“DefaultAppPool”更改为您为应用程序池命名的任何名称。)
  8. 点击“核对名称”按钮,然后点击“确定”。

在Windows Server 2008(r2)上,您不能通过属性->安全性为文件夹分配应用程序池标识。你可以使用以下命令通过管理命令提示符来完成:

icacls "c:\yourdirectory" /t /grant "IIS AppPool\DefaultAppPool":(R)
只是为了增加混乱,(Windows资源管理器)有效权限对话框不适用于这些登录。 我有一个网站“Umbo4”使用直通身份验证,并在网站根文件夹中查看了用户的有效权限。 检查名称测试解析了名称“IIS AppPool\Umbo4”,但有效权限显示用户对文件夹没有任何权限(所有复选框都未选中) 然后,我使用Explorer Security选项卡显式地将该用户从文件夹中排除。 正如预期的那样,这导致站点失败,出现HTTP 500.19错误。然而,有效权限看起来和以前完全一样

在解析名称时,请记住使用服务器的本地名称,而不是域名

IIS AppPool\DefaultAppPool

(只是一个提醒,因为这绊倒了我一点):enter image description here

乔恩·亚当斯的最佳回答

下面是如何为PowerShell实现这个功能

$IncommingPath = "F:\WebContent"
$Acl = Get-Acl $IncommingPath
$Ar = New-Object  system.security.accesscontrol.filesystemaccessrule("IIS AppPool\DefaultAppPool","FullControl","ContainerInherit, ObjectInherit", "None", "Allow")
$Acl.SetAccessRule($Ar)
Set-Acl $IncommingPath $Acl

使用IIS默认配置访问IIS AppPool \ YourAppPoolName用户可能还不够

在我的例子中,在添加AppPool用户后,我仍然有错误HTTP错误401.3 -未经授权,并且只有在向IUSR用户添加权限后才修复。

这是必要的,因为默认情况下,匿名访问是使用IUSR完成的。您可以设置另一个特定用户、应用程序池或继续使用IUSR,但不要忘记设置适当的权限。

authentication tab

感谢这个答案:HTTP错误401.3 -未经授权

我通过创建一个名为IUSER的新用户和密码,并将其添加到网络服务和用户组,就解决了所有asp.net问题。然后创建所有的虚拟站点和应用程序,将身份验证设置为IUSER及其密码。设置高级文件访问包括IUSER和BAM,它至少修复了3-4个问题,包括这个问题。

戴夫

Part A:配置应用程序池

假设应用程序池名为' myypool ' 从IIS管理器

进入应用程序池的“高级设置”
  1. 向下滚动到“身份”。尝试编辑该值将弹出一个对话框。选择“内置帐户”,并在其下面选择“ApplicationPoolIdentity”。

  2. 在“身份”下面几行,你应该找到“加载用户配置文件”。这个值应该设置为“True”。

第二部分:配置网站

  1. 网站名称:SiteName(只是一个例子)
  2. 物理路径:C:\Whatever(只是一个例子)
  3. <李>连接为…:应用用户(直通认证) (以上设置可以在IIS管理器中站点的“基本设置”中找到)
  4. 配置基本设置后,在站点的主控制台的“IIS”下寻找“Authentication”配置。打开它。您应该看到一个“匿名身份验证”选项。确保它已启用。然后右键点击“编辑…””它。选择“应用程序池标识”。

C部分:配置文件夹

有问题的文件夹是C:\Whatever

  1. 点击属性-共享-高级共享-权限,然后勾选“共享此文件夹”
  2. 在同一个对话框中,你会发现一个按钮“权限”。点击它。
  3. 将打开一个新的对话框。点击“添加”。
  4. 一个新的对话框“选择用户或组”将打开。在“来自此位置”下,确保名称与您的本地主机相同。然后,在“输入对象名称”下,输入“IIS AppPool\ myypool”,然后单击“检查名称”,然后单击“确定”
  5. 给予' myypool '用户完全的共享权限。应用它并关闭文件夹属性
  6. 再次打开文件夹属性。这一次,点击安全-高级-权限,然后点击添加。在顶部会有一个“选择一个主体”选项,或者其他一些选择用户的选项。点击它。
  7. 将再次打开“选择用户或组”对话框。重复步骤4。
  8. 将所有或尽可能多的权限授予“myypool”用户。
  9. 选中“替换所有子对象权限…”,然后应用并关闭。

您现在应该能够使用浏览网站