IIS7权限概述 - ApplicationPoolIdentity

时间:2011-09-07 12:54:23

标签: iis-7 permissions

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

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

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

编辑============================================== ================================

有关屏幕截图中的问题,请参阅下文。我们的网站(www.silverchip.co.uk)使用用户名SilverChip.co.uk运行。但是,当我添加提交时,此用户确实存在!

enter image description here

=================================请参阅AppPool图像

enter image description here

8 个答案:

答案 0 :(得分:618)

ApplicationPoolIdentity实际上是在IIS7 +中使用的最佳实践。它是一个动态创建的,无特权的帐户。要为特定应用程序池添加文件系统安全性,请参阅IIS.net's "Application Pool Identities"。快速版:

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

  1. 打开Windows资源管理器
  2. 选择文件或目录。
  3. 右键单击该文件,然后选择“属性”
  4. 选择“安全”标签
  5. 点击“修改”,然后点击“添加”按钮
  6. 单击“位置”按钮,确保选择本地计算机。 (如果服务器属于一个域,则 Windows域。)
  7. 在“输入要选择的对象名称:”文本框中输入“ IIS AppPool \ DefaultAppPool ”。 (不要忘记将“DefaultAppPool”更改为您为应用程序池命名的任何内容。)
  8. 单击“检查名称”按钮,然后单击“确定”。

答案 1 :(得分:71)

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

IIS AppPool\DefaultAppPool

(只是提醒一下,因为这让我感到有点兴奋):enter image description here

答案 2 :(得分:25)

在Windows Server 2008(r2)上,您无法通过Properties-> Security将应用程序池标识分配给文件夹。您可以使用以下命令通过管理命令提示符执行此操作:

icacls "c:\yourdirectory" /t /grant "IIS AppPool\DefaultAppPool":(R)

答案 3 :(得分:24)

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

在我的情况下,我在添加AppPool用户后仍然出现错误 HTTP错误401.3 - 未经授权,并且仅在向 IUSR 用户添加权限后才修复。< / p>

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

authentication tab

对此答案的肯定:HTTP Error 401.3 - Unauthorized

答案 4 :(得分:3)

Jon Adams的回答

以下是如何为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

答案 5 :(得分:3)

A部分:配置应用程序池

假设应用程序池名为“MyPool” 从IIS管理器转到应用程序池的“高级设置”

  1. 向下滚动到“身份”。尝试编辑该值将弹出一个对话框。选择“内置帐户”,然后选择“ApplicationPoolIdentity”。

  2. 在“身份”下面几行,您应找到“加载用户个人资料”。该值应设置为“True”。

  3. B部分:配置您的网站

    1. 网站名称:SiteName(仅举例)
    2. 物理路径:C:\ Whatever(只是一个例子)
    3. 以...身份连接:应用程序用户(传递身份验证) (以上设置可在IIS管理器中站点的“基本设置”中找到)
    4. 配置基本设置后,在站点主控制台的“IIS”下查找“身份验证”配置。打开它。您应该看到“匿名身份验证”选项。确保它已启用。然后右键单击并“编辑...”它。选择“应用程序池标识”。
    5. C部分:配置文件夹

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

      1. 转到“属性” - “共享” - “高级共享” - “权限”,然后勾选“共享此文件夹”
      2. 在同一个对话框中,您会找到一个“权限”按钮。点击它。
      3. 将打开一个新对话框。点击“添加”。
      4. 将打开一个新对话框“选择用户或组”。在“从此位置”下,确保名称与本地主机名称相同。然后,在“输入对象名称”下,键入“IIS AppPool \ MyPool”并单击“检查名称”,然后单击“确定”
      5. 为“MyPool”用户授予完全共享权限。应用它并关闭文件夹属性
      6. 再次打开文件夹属性。这一次,转到安全性 - 高级 - 权限,然后单击添加。顶部会有一个选项'选择一个校长',或者选择一个其他选项来选择一个用户。点击它。
      7. 将再次打开“选择用户或组”对话框。重复步骤4.
      8. 向“MyPool”用户提供您需要的全部或尽可能多的权限。
      9. 选中“替换所有子对象权限...”并应用并关闭。
      10. 您现在应该可以使用浏览网站

答案 6 :(得分:1)

只是为了增加混乱,(Windows资源管理器)“有效权限”对话框不适用于这些登录。 我有一个使用传递身份验证的站点“Umbo4”,并查看了站点根文件夹中用户的有效权限。 “检查名称”测试解析了名称“IIS AppPool \ Umbo4”,但“有效权限”显示该用户对该文件夹完全没有权限(未选中所有复选框)。

然后,我使用“资源管理器安全性”选项卡显式地从文件夹中排除了此用户。 这导致站点失败,出现HTTP 500.19错误,如预期的那样。然而,有效权限看起来与以前完全一样。

答案 7 :(得分:1)

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

戴夫