Iis 7 IIS7权限概述-ApplicationPoolIdentity

Iis 7 IIS7权限概述-ApplicationPoolIdentity,iis-7,permissions,Iis 7,Permissions,我们最近升级到IIS7作为核心web服务器,我需要一个权限方面的概述。以前,当需要写入文件系统时,我会让AppPool用户(网络服务)访问目录或文件 在IIS7中,默认情况下,AppPool用户设置为ApplicationPoolIdentity。因此,当我检查任务管理器时,我看到一个名为“WebSite.com”的用户帐户正在运行IIS进程(“WebSite.com”是IIS中网站的名称) 但是,如果我尝试使用该用户帐户授予权限,则该用户帐户不存在。那么,我如何确定哪个用户也要授予权限呢 编辑

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

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

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

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

有关屏幕截图中的问题,请参见下文。我们的网站(www.silverchip.co.uk)以用户名silverchip.co.uk运行。但是,当我添加任务时,该用户不存在

====================================================请参阅应用程序池映像


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

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

  • 打开Windows资源管理器
  • 选择一个文件或目录
  • 右键单击文件并选择“属性”
  • 选择“安全”选项卡
  • 单击“编辑”,然后单击“添加”按钮
  • 单击“位置”按钮,确保选择本地机器。(如果服务器属于Windows域,则不是Windows域。)
  • 在“输入要选择的对象名称:”文本框中输入“IIS AppPool\DefaultAppPool”。(不要忘记将此处的“DefaultAppPool”更改为您命名的应用程序池。)
  • 单击“检查名称”按钮,然后单击“确定” 在Windows Server 2008(r2)上,无法通过属性->安全性将应用程序池标识分配给文件夹。您可以使用以下命令通过管理命令提示符执行此操作:

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

    更让人困惑的是,(Windows资源管理器)有效权限对话框对这些登录不起作用。 我有一个使用直通式身份验证的站点“Umbo4”,并查看了用户在站点根文件夹中的有效权限。 检查名称测试解析了名称“IIS AppPool\Umbo4”,但有效权限显示用户对该文件夹完全没有权限(所有复选框均未选中)

    然后,我使用“资源管理器安全”选项卡明确地将该用户从文件夹中排除。
    这导致站点失败,出现HTTP 500.19错误,正如预期的那样。但是,有效权限看起来与以前完全相同。

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

    IIS AppPool\DefaultAppPool
    

    (这只是一个提醒,因为这让我有点绊倒):

    乔恩·亚当斯的最佳答案

    下面是如何为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,但不要忘记设置适当的权限


    这个答案的功劳是:

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


    Dave第A部分:配置应用程序池

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

  • 向下滚动至“标识”。尝试编辑该值将弹出一个对话框。选择“内置帐户”,然后在其下选择“ApplicationPoolIdentity”

  • 在“标识”下面的几行中,您应该可以找到“加载用户配置文件”。此值应设置为“True”

  • 第二部分:配置您的网站

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

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

  • 转到属性-共享-高级共享-权限,并勾选“共享此文件夹”
  • 在同一对话框中,您将找到“权限”按钮。点击它
  • 将打开一个新对话框。单击“添加”
  • 将打开一个新对话框“选择用户或组”。在“从此位置”下,确保名称与本地主机相同。然后,在“输入对象名称”下,键入“IIS AppPool\MyPool”,单击“检查名称”,然后单击“确定”
  • 为“MyPool”用户授予完全共享权限。应用它并关闭文件夹属性
  • 再次打开文件夹属性。这一次,转到安全-高级-权限,然后单击添加。将有一个选项“选择一个