繁体   English   中英

IIS7 权限概述 - ApplicationPoolIdentity

[英]IIS7 Permissions Overview - ApplicationPoolIdentity

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

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

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

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

请参阅 AppPool 图像:

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

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

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

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

IIS AppPool\DefaultAppPool

(只是提醒一下,因为这让我有点绊倒):在此处输入图像描述

对于 IIS 默认配置,授予对IIS AppPool\YourAppPoolName用户的访问权限可能还不够

就我而言,我仍然遇到错误HTTP 错误 401.3 - 添加 AppPool 用户后未经授权,并且仅在向IUSR用户添加权限后才修复。

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

身份验证选项卡

归功于此答案: HTTP Error 401.3 - Unauthorized

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

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

A 部分:配置应用程序池

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

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

  2. 在“身份”下方几行,您应该找到“加载用户配置文件”。 此值应设置为“真”。

B 部分:配置您的网站

  1. 网站名称:SiteName(只是一个例子)
  2. 物理路径:C:\Whatever(只是一个例子)
  3. Connect as... : Application User (pass-through authentication) (以上设置可在 IIS 管理器站点的“基本设置”中找到)
  4. 配置基本设置后,在站点主控制台的“IIS”下查找“身份验证”配置。 打开它。 您应该会看到“匿名身份验证”选项。 确保它已启用。 然后右键单击并“编辑...”它。 选择“应用程序池标识”。

C 部分:配置文件夹

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

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

您现在应该可以使用浏览网站了

乔恩亚当斯的最佳答案

这是为 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

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

然后,我使用 Explorer 安全选项卡从文件夹中明确排除了该用户。 正如预期的那样,这导致站点因 HTTP 500.19 错误而失败。 然而,有效权限看起来和以前一模一样。

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

戴夫

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM