映射 Posix 标识符
Posix 子系统必须能够将遇到的任何 安全标识符 (SID) 转换为称为 Posix ID 的 32 位值。 此外,它必须能够将 ID 分类为用户 ID 或组 ID。 为了了解如何完成此映射,让我们首先看看必须映射的 SID。
SID 有两个组件:域的 SID 和域中帐户的相对 ID。 例如,在 SID S-1-518364-21-43-8 中,最后一个数字 8 是帐户的相对 ID (RID) ,S-1-518364-21-43 是域的 SID。
域信息存储在 TrustedDomain 对象中。 存储在 TrustedDomain 对象中的部分信息是用于该域中 SID 的 Posix ID 偏移量。 例如,假设 TrustedDomain 的定义如下:
Name: NtPgm
Sid: S-1-518364-21-43
Posix Offset: 0x130000
此域中帐户的 Posix ID 是通过将 0x130000 添加到帐户的相对 ID 来生成的。 因此,对应于 SID S-1-518364-21-43-8 的 Posix ID 将0x130008。
并非所有 Posix ID 转换都使用 TrustedDomain 对象。 下表显示了使用已知偏移值映射的 SID。
源 | Posix ID 偏移量 |
---|---|
内置域中的 SID | 0x20000 |
帐户域中的 SID | 0x30000 |
主域中的 SID 仅在工作站上 () | 0x40000 |
最后,另一组 SID(登录 SID)需要特殊处理。 这些值由 Windows 登录进程为每个登录会话分配,其格式为 S-1-5-5-X-Y,其中 X 和 Y 被视为单个LARGE_INTEGER,每个登录会话都会递增。 这些 SID 映射到常量 Posix ID 0xFFF。 若要映射 Posix ID 0xFFF,可以转换最适合此情况的任何 登录标识符 ,或者默认使用 S-1-5-5-0-0。 (例如,如果 posix 用户对对象应用保护并指定 FFFx,则替换该用户的登录标识符比仅分配 S-1-5-5-0-0.)