“NT AUTHORITY\SYSTEM”是用户还是组?

“NT AUTHORITY\SYSTEM”是用户还是组?

在 Windows 中,用户System以组符号显示: 在此处输入图片描述(使用内部 Win32 APILookupAccountSid还透露,这似乎是一个团体类型组

另一方面,进程可以system context在 中运行user context。此外,Microsoft 文档将其描述为“系统用户”或“系统帐户”,而不是“系统组”。

它是否是为了任何遗留目的而显示为组的用户?

(或者是某事维尔纳·海森堡会感兴趣吗?


笔记:NT AUTHORITY\SYSTEM 用户是什么?类似,但没有回答为什么它显示为组并且表现得像用户的问题。

答案1

第一的,访问令牌 包含的内容远不止安全标识符 (SID)只需“以管理员身份运行”一个程序,就可以在任务管理器中看到它的用户是自己而不是管理员,而这个奇迹只是通过修改访问令牌来实现的,而不是通过替换SID。

其次,尽管其他来源(甚至 Microsoft 内部)都这么说,但 NT-AUTHORITY 和 SYSTEM 既不是帐户也不是组。SID 通常有一个名称,在需要时显示。用户帐户将其 SID 作为主要 SID 提供给访问令牌,这也将决定各种实用程序显示的名称。但访问令牌可能包含其他 SID,例如属于该用户帐户的所有组的 SID。在检查权限时,Windows 将在访问令牌中查找具有该权限的任何 SID。

一些众所周知的 Windows SID 将会具有 Windows 报告的名称,尽管它们实际上并不属于任何帐户。

A安全标识符 维基百科将其定义为:

用户、用户组或用户组的唯一、不可变的标识符 其他安全主体

SID 甚至不需要定义用户帐户或组。它只是定义了一组权限。上述 Wikipedia 文章补充道:

Windows 根据访问控制列表 (ACL) 授予或拒绝对资源的访问和特权,访问控制列表使用 SID 来唯一标识用户及其组成员身份。当用户登录计算机时,会生成一个访问令牌,其中包含用户和组 SID 以及用户特权级别。当用户请求访问资源时,会根据 ACL 检查访问令牌,以允许或拒绝对特定对象执行特定操作。

的 SIDNT-AUTHORITY\SYSTEM可以添加到其他帐户。例如,关于 本地系统帐户

LocalSystem 帐户是服务控制管理器使用的预定义本地帐户。[...]其令牌包括 NT AUTHORITY\SYSTEM 和 BUILTIN\Administrators SID;这些账户可以访问大多数系统对象。

从上面的文字中,我们已经可以看到微软文档中关于系统 SID 的混乱,它们既不是真正的帐户也不是组 - 只是一组权限。这种混乱还延伸到其他实用程序和文章,因此任何返回的信息都应该仔细检查。

微软文章 Windows 操作系统中众所周知的安全标识符 详细说明所有系统 SID,其中一些我列在下面:

图像

结论:NT-AUTHORITY\SYSTEM 是安全 ID 的名称,既不是组也不是帐户。当它是程序的主 SID 时,它在任务管理器中显示为 SYSTEM。我最多称之为“伪帐户”。

答案2

在我看来,你的观察是正确的。NT-AUTHORITY\SYSTEM是一个群体,所以你可以把它称为系统团体. 本组自 Windows NT 4 以来就存在至少已经有一个团体在那里:

特殊群体

[...]

系统——操作系统。

还有一个名为本地系统哪个

[...] 包括 NT AUTHORITY\SYSTEM [...]

所以你可以称其为系统用户谁是 SYSTEM 组的成员。

系统内部获取Sid支持系统的群论:

C:\>PsGetsid.exe S-1-5-18

PsGetSid v1.44 - Translates SIDs to names and vice versa
Copyright (C) 1999-2008 Mark Russinovich
Sysinternals - www.sysinternals.com

Account for YOURPCNAMEHERE\S-1-5-18:
Well Known Group: NT-AUTHORITY\SYSTEM

关于以组的形式启动某个进程:

为了管理安全性,进程需要访问令牌。访问令牌仅包含 SID。我不确定是否有检查用户的 SID 是否真的是用户或组。原则上这并不重要:SID 定义可以访问的内容。也许CodeProject 文章可以帮助实施

相关内容