Windows 帐户何时应属于用户组?

Windows 帐户何时应属于用户组?

当您通过 GUI 在 Windows 中创建帐户时,该帐户会自动添加到本地Users组。可以从该组中删除帐户。例如,当使用 IIS 应用程序池的帐户时,您可以从中删除它Users并将其添加到IIS_IUSRS。或者,在这种情况下,您可以保留Users原位。我见过系统管理员以这两种方式执行操作。每种方式的含义是什么?您如何决定?

当我从组中删除用户时Users,我仍然可以执行以下命令:

runas /user:name cmd.exe
whoami /groups

尽管如此,BUILTIN\Users似乎意外的是,该用户仍然显示。这在哪里解释?

答案1

如果从用户组中删除了“经过身份验证的用户”众所周知的安全主体,则可能需要将帐户或组添加到用户组。用户中的“经过身份验证的用户”成员身份也可能解释了导致运行时出现用户中的成员身份的原因whoami /groups

应用程序池帐户通常不需要用户成员身份。如果您发现它需要,更好的方法可能是使用 IIS_Users 安全主体对所需资源进行 ACL。

内置安全主体 IIS_Users(Windows 2008 之前称为 IIS_WPG)只是一种为 IIS 应用程序池帐户授予资源权限的方法。这些资源不一定具有授予内置用户组的访问权限,并且 IIS_Users 成员的帐户不一定是内置用户组的成员。

有关 IIS_Users 的目的和背景的详细信息:

了解 IIS 7 中的内置用户和组帐户
http://www.iis.net/learn/get-started/planning-for-security/understanding-built-in-user-and-group-accounts-in-iis


介绍

在早期版本的 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”复制到另一台计算机。一种解决方法是使用域帐户,但这需要在基础结构中添加活动目录。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 管理器授予匿名帐户网络权限,请执行以下操作:

  1. 单击“开始”,键入 INetMgr.exe,然后单击 Enter。如果出现提示,请单击“继续”以提升您的权限。
  2. 在“连接”部分,单击计算机名称旁边的“+”按钮。
  3. 在 IIS 管理器中,双击要管理的站点。
  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>  

答案2

Users被授予对机器上几乎所有文件(其他用户主目录除外)以及大部分注册表的读取权限。Users显然,将用户从 ACE 中移除将阻止他们从任何具有UsersACE 的地方读取。

相关内容