一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

Windows 安全标识符SID与文件访问权限的绑定机制

时间:2026-07-15 19:33:48 编辑:袖梨 来源:一聚教程网

Windows文件访问权限实际依靠SID而非用户名生效,系统在ACL中存储SID并比对访问令牌中的SID来授权,改名不影响权限,但删除重建同名账户因SID变更导致权限失效。

windows 文件访问权限不是靠用户名生效的,而是靠安全标识符(sid)绑定并执行的。当你给某个用户或组设置读取、写入等权限时,系统实际记录的是该主体的 sid,而非显示名称。这意味着改名、重命名账户不会影响已有权限,但删除再重建同名账户会失效——因为新账户拥有全新 sid。

SID 是权限绑定的实际载体

每个用户、组或计算机账户在创建时,系统自动生成一个全局唯一的 SID,并永久绑定。文件、文件夹、注册表项等受保护对象的安全描述符(Security Descriptor)中,自由访问控制列表(DACL)条目存储的就是一个个 SID,搭配对应的访问掩码(如 GENERIC_READ 或 FILE_WRITE_DATA)。Windows 在做访问检查时,只比对访问令牌中的 SID 与 DACL 中的 SID,完全忽略用户名。

  • 例如:用户 zhangsan 的 SID 是 S-1-5-21-123...-1001,你对其授予“修改”权限后,ACL 中记录的是这个 SID;即使你把账户名改成 zs,权限依然有效。
  • 若删除该账户再新建同名 zhangsan,新账户 SID 变为 S-1-5-21-123...-1002,旧 ACL 中没有匹配项,自然无权访问。

访问令牌是 SID 权限生效的桥梁

用户登录时,系统生成访问令牌(Access Token),其中包含用户自身的 SID、所属组的全部 SID(包括内置组如 Users、Administrators),以及相关权限标志。每次程序尝试打开文件,系统就用这个令牌里的 SID 集合,逐条比对目标文件 DACL 中的 ACE(访问控制项)。

  • 只要任一 SID 在 DACL 中被授予所需权限(如读取),且未被显式拒绝(拒绝优先于允许),访问即被放行。
  • 注销或提权操作(如以管理员身份运行)会触发新令牌生成,确保权限状态实时同步。

常见场景中 SID 绑定带来的影响

理解 SID 绑定机制能避免很多权限误判:

  • 迁移账户时权限丢失:将用户从一台电脑迁移到另一台,若未使用 SIDHistory 或域迁移工具,本地账户 SID 不同,原文件权限无法继承。
  • 复制/移动文件时权限变化:跨卷复制会重置 NTFS 权限(采用目标文件夹继承规则),而同卷移动则保留原始 SID 绑定的 DACL。
  • 内置组权限不可见但真实存在:像 BUILTINAdministrators(SID S-1-5-32-544)的权限写在 ACL 里,但资源管理器通常只显示“Administrators”,背后仍是 SID 匹配。

查看和验证 SID 绑定的方法

你可以直接观察权限背后的 SID,确认绑定是否准确:

  • 命令行查用户 SID:whoami /userwmic useraccount where name='username' get sid
  • 查文件 ACL 中的 SID:icacls "C:pathtofile" /s(显示完整 SID 形式)
  • 用 PowerShell 查详细信息:Get-Acl "C:test.txt" | fl,Access 属性里每条 ACE 都含 IdentityReference(可解析的 SID 名称)和 IsInherited 等关键字段。

热门栏目