了解 IIS 7 中的内置用户和组帐户

作者:Saad Ladki

介绍

在早期版本的 IIS 中,安装期间会创建一个名为 IUSR_MachineName 的本地帐户。 每当启用匿名身份验证时,IIS 默认使用 IUSR_MachineName 帐户。 这由 FTP 和 HTTP 服务使用。

还有一个名为 IIS_WPG 的组,该组用作所有应用程序池标识的容器。 在 IIS 设置过程中,系统上的所有相应资源都会被授予 IIS_WPG 组的正确用户权限,以便管理员在创建新的应用程序池帐户时只需将标识添加到该组。

此模型运行良好,但存在其缺点:IUSR_MachineName 帐户和 IIS_WPG 组都位于创建它们的系统上。 Windows 中的每个帐户和组都有一个名为安全标识符 (SID) 的唯一数字,用于将其与其他帐户区分开来。 创建 ACL 时,仅会使用 SID。 作为早期版本的 IIS 设计的一部分,IUSR_MachineName 包含在 metabase.xml 文件中,因此,如果尝试将 metabase.xml 从一台计算机复制到另一台计算机,则不起作用。 另一台计算机上的帐户将具有不同的名称。

此外,由于不同计算机上的 SID 不同,无法将 ACL 从一台计算机“xcopy /o”到另一台计算机。 一种解决方法是使用域帐户,但需要向基础结构添加 Active Directory。 IIS_WPG 组再用户权限方面有类似的问题。 如果在一台计算机的文件系统上为 IIS_WPG 设置 ACL,并尝试将其“xcopy /o”道另一台计算机上,则将失败。 此体验在 IIS 7 及更高版本中使用内置帐户和组进行了改进。

操作系统保证内置帐户和组始终具有唯一的 SID。 IIS 7 及更高版本已此基础上进一步进行了改进,并确保新帐户和组使用的实际名称永远不会本地化。 例如,无论安装的 Windows 的语言如何,IIS 帐户名将始终为 IUSR,组名将为 IIS_IUSRS。

总之,IIS 7 及更高版本提供以下内容:

  • IUSR 内置帐户替换了 IUSR_MachineName 帐户。
  • IIS_IUSRS 内置组替换了 IIS_WPG 组。

IUSR 帐户不再需要密码,因为它是内置帐户。 从逻辑上讲,可以将它视为与 NETWORKSERVICE 或 LOCALSERVICE 帐户相同。 下面各节将更深入地讨论新的 IUSR 帐户和 IIS_IUSRS 组。

了解新的 IUSR 帐户

IUSR 帐户替换了 IIS 7 及更高版本中的 IUSR_MachineName 帐户。 如果安装 Windows Server 2008 中包含的 FTP 6 兼容服务器,仍将创建和使用 IUSR_MachineName 帐户。 如果未安装 Windows Server 2008 附带的 FTP 服务器,则不会创建此帐户。

此内置帐户不需要密码,并且是启用匿名身份验证时使用的默认标识。 如果在 applicationHost.config 文件中查看,将看到以下定义:

<anonymousAuthentication enabled="true" userName="IUSR" defaultLogonDomain="" />

这会告知 IIS 对所有匿名身份验证请求使用新的内置帐户。 最大的优点是可以:

  • 使用 Windows 资源管理器或任何多种命令行工具设置 IUSR 帐户的文件系统权限。
  • 不再需要担心此帐户的密码过期。
  • 使用 xcopy /o 将文件及其所有权和 ACL 信息无缝复制到不同的计算机。

注意

IUSR 帐户类似于 LOCALSERVICE,因为它以匿名方式在网络上执行操作。 NETWORKSERVICE 和 LOCALSYSTEM 帐户可以充当计算机标识,但 IUSR 帐户不能,因为将需要提升用户权限。 如果需要匿名帐户具有网络上的权限,则必须创建新的用户帐户并手动设置用户名和密码,就像过去一样进行匿名身份验证。

若要使用 IIS Manager 授予网络上的匿名帐户权限,请执行以下操作:

  1. 单击“开始”,键入 INetMgr.exe,然后单击“输入”。 如果出现提示,请单击“继续”以提升权限。
  2. 在“连接”部分中,单击 + 计算机名称旁边的按钮。
  3. 在 IIS Manager 中,双击要管理的站点。
  4. 在“功能视图”中双击“身份验证”
  5. 选择“匿名身份验证”,然后单击“操作”窗格中的“编辑”。
  6. 在“编辑匿名身份验证凭据”对话框中,单击“特定用户”选项,然后单击“设置”。
  7. 在“设置凭据”对话框中,输入所需的用户名和密码,然后单击“确定”。

了解新 IIS_IUSRS 组

IIS_IUSRS 组替换了 IIS_WPG 组。 此内置组有权访问所有必要的文件和文件夹资源,以便在将账户添加到此组后,该账户可以无缝充当应用程序池标识。

与内置帐户一样,此内置组解决了多个 xcopy 部署障碍。 如果为 IIS_WPG 组(IIS 6.0 系统上可用)设置文件的权限,并尝试将这些文件复制到另一台 Windows 计算机,则组的 SID 会有所不同,并且站点的配置将中断。

由于 IIS 7 及更高版本中的组 SID 在运行 Windows Server 2008 的所有系统上都相同,因此,在将文件从计算机移动到计算机时,可以使用“xcopy /o”保留 ACL 及其所有权信息。 这使得 xcopy 部署变得简单。

IIS 7 及更高版本还使配置应用程序池标识并简化所有必要的更改的过程。 当 IIS 启动工作进程时,它需要创建进程将使用的令牌。 创建此令牌后,IIS 会在运行时自动将 IIS_IUSRS 成员身份添加到工作进程令牌。 作为“应用程序池标识”运行的帐户不再需要是 IIS_IUSRS 组的显式部分。 此更改有助于在设置系统时减少障碍,并使整体体验更加良好。

如果要禁用此功能并将帐户手动添加到 IIS_IUSRS 组,请将 manualGroupMembership 值设置为“true ”来禁用此功能。 以下示例演示如何对 defaultAppPool 执行此操作:

<applicationPools>
    <add name="DefaultAppPool">
        <processModel manualGroupMembership="true" />
    </add>
</applicationPools >