阿杰 ✅ 我来帮你整理一份 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 | 说明 |
---|---|---|
Everyone | S-1-1-0 | 所有用户 |
LOCAL | S-1-2-0 | 本地计算机用户 |
CREATOR OWNER | S-1-3-0 | 创建文件/对象的用户 |
Administrators | S-1-5-32-544 | 本地管理员组 |
Users | S-1-5-32-545 | 本地用户组 |
Guests | S-1-5-32-546 | 来宾用户组 |
SYSTEM | S-1-5-18 | 操作系统内核账户 |
Anonymous | S-1-5-7 | 匿名登录用户 |
Domain Admins | S-1-5-21-xxx-xxx-xxx-512 | 域管理员组 |
Domain Users | S-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,表示具体用户/组)
发表回复