阿杰 ✅ 我来帮你整理一份 Windows 中 SID(安全标识符,Security Identifier)详解,让你对 SID 的概念、结构、作用和常见应用场景有全面的理解。


🔹 Windows 中的 SID(Security Identifier)详解

1. 什么是 SID?

  • SID(Security Identifier) 是 Windows 操作系统用来唯一标识用户、组和其他安全主体(Security Principal)的标识符
  • 当系统需要验证访问权限时,不会直接使用用户名,而是通过 SID 与 ACL(访问控制列表) 进行匹配。
  • 即使两个账户名字相同,只要 SID 不同,就被视为不同账户。

📌 类似于 身份证号,而不是昵称。


2. SID 的结构

一个典型的 SID 如下:

S-1-5-21-3623811015-3361044348-30300820-1013

结构拆解:

  • S → 前缀,表示这是一个 SID。
  • 1 → 版本号(Revision Level)。
  • 5 → 权限标识符(Identifier Authority),比如 5 表示 NT 权限。
  • 21-3623811015-3361044348-30300820 → 子权限(Subauthority),一般是机器或域的唯一标识。
  • 1013 → 相对 ID(RID, Relative Identifier),用来区分该系统/域内的具体账户或组。

3. 常见的内置 SID

Windows 为一些常见的用户和组定义了固定 SID:

对象SID说明
EveryoneS-1-1-0所有用户
LOCALS-1-2-0本地计算机用户
CREATOR OWNERS-1-3-0创建文件/对象的用户
AdministratorsS-1-5-32-544本地管理员组
UsersS-1-5-32-545本地用户组
GuestsS-1-5-32-546来宾用户组
SYSTEMS-1-5-18操作系统内核账户
AnonymousS-1-5-7匿名登录用户
Domain AdminsS-1-5-21-xxx-xxx-xxx-512域管理员组
Domain UsersS-1-5-21-xxx-xxx-xxx-513域用户组

4. SID 的作用

  • 身份验证:用户登录时,系统通过 SID 标识身份。
  • 权限控制:文件/文件夹/注册表的 ACL(访问控制列表)中保存的都是 SID,而不是用户名。
  • 域环境:在 Active Directory 中,SID 确保用户、组在不同域控制器之间唯一。

5. 如何查看 SID

(1)使用 whoami 命令

whoami /user

输出示例:

USER INFORMATION
----------------
User Name      SID
desktop\ajie   S-1-5-21-1122334455-66778899-1010101010-1001

(2)使用 wmic 命令

wmic useraccount get name,sid

(3)PowerShell 查询

Get-LocalUser | Select Name,SID


6. SID 与账户重建问题

  • 删除并新建同名用户 → 新账户会有新的 SID,不再等同于旧账户。
  • 结果:旧账户创建的文件/注册表项,可能拒绝新账户访问,因为 ACL 记录的是旧 SID。

解决方法:

  • 使用 takeown 或 icacls 命令修改对象的权限。

7. SID 的应用场景

  • 系统安全管理(ACL 权限、组策略)。
  • 迁移与备份(域迁移、用户数据恢复需要 SID 匹配)。
  • 取证与溯源(日志分析时通过 SID 识别用户)。
  • 开发(需要 API 获取当前用户的 SID 来判断权限)。

📌 总结:
SID 是 Windows 安全体系的核心,保证了每个用户/组的唯一性和权限控制。用户名可以修改,但 SID 一旦生成通常不会改变。

这是 Windows SID 结构示意图,把一个 SID(例如 S-1-5-21-3623811015-3361044348-30300820-1013)拆分成了几个部分:

  • S → 固定前缀(标识这是 SID)
  • 1 → 版本号
  • 5 → 权限标识符(Authority,如 NT Authority)
  • 21-…-…-… → 子权限(机器/域唯一标识)
  • 1013 → 相对 ID(RID,表示具体用户/组)