Windows文件访问权限实际依靠SID而非用户名生效,系统在ACL中存储SID并比对访问令牌中的SID来授权,改名不影响权限,但删除重建同名账户因SID变更导致权限失效。
windows 文件访问权限不是靠用户名生效的,而是靠安全标识符(sid)绑定并执行的。当你给某个用户或组设置读取、写入等权限时,系统实际记录的是该主体的 sid,而非显示名称。这意味着改名、重命名账户不会影响已有权限,但删除再重建同名账户会失效——因为新账户拥有全新 sid。
每个用户、组或计算机账户在创建时,系统自动生成一个全局唯一的 SID,并永久绑定。文件、文件夹、注册表项等受保护对象的安全描述符(Security Descriptor)中,自由访问控制列表(DACL)条目存储的就是一个个 SID,搭配对应的访问掩码(如 GENERIC_READ 或 FILE_WRITE_DATA)。Windows 在做访问检查时,只比对访问令牌中的 SID 与 DACL 中的 SID,完全忽略用户名。
用户登录时,系统生成访问令牌(Access Token),其中包含用户自身的 SID、所属组的全部 SID(包括内置组如 Users、Administrators),以及相关权限标志。每次程序尝试打开文件,系统就用这个令牌里的 SID 集合,逐条比对目标文件 DACL 中的 ACE(访问控制项)。
理解 SID 绑定机制能避免很多权限误判:
你可以直接观察权限背后的 SID,确认绑定是否准确:
whoami /user 或 wmic useraccount where name='username' get sid
icacls "C:pathtofile" /s(显示完整 SID 形式)Get-Acl "C:test.txt" | fl,Access 属性里每条 ACE 都含 IdentityReference(可解析的 SID 名称)和 IsInherited 等关键字段。