访问令牌中的 SID 属性
访问令牌 中的每个用户和组 安全标识符(SID)都有一组属性,用于控制系统如何在访问检查中使用 SID。 下表列出了控制访问检查的属性。
属性 | 描述 |
---|---|
SE_GROUP_ENABLED | 启用了具有此属性的 SID 进行访问检查。 当系统执行访问检查时,它会检查访问允许和拒绝访问 访问控制条目(ACE),这些条目适用于访问令牌中启用的 SID 之一。 除非设置了SE_GROUP_USE_FOR_DENY_ONLY属性,否则访问检查期间将忽略不带此属性的 SID。 |
SE_GROUP_USE_FOR_DENY_ONLY | 具有此属性的 SID 是仅限拒绝的 SID。 当系统执行访问检查时,它会检查应用于 SID 的访问被拒绝的 ACE,但它会忽略 SID 的访问允许的 ACE。 如果设置了此属性,则不会设置SE_GROUP_ENABLED属性,并且无法重新启用 SID。 |
若要设置或清除组 SID 的SE_GROUP_ENABLED属性,请使用 AdjustTokenGroups 函数。 不能禁用具有SE_GROUP_MANDATORY属性的组 SID。 不能使用 AdjustTokenGroups 禁用访问令牌的用户 SID。
若要确定在令牌中是否启用了 SID,即是否具有SE_GROUP_ENABLED属性,请调用 CheckTokenMembership 函数。
若要设置 SID 的SE_GROUP_USE_FOR_DENY_ONLY属性,请在调用 CreateRestrictedToken 函数时指定的仅拒绝 SID 列表中包括 SID。 CreateRestrictedToken 可以将SE_GROUP_USE_FOR_DENY_ONLY属性应用于任何 SID,包括具有SE_GROUP_MANDATORY属性的用户 SID 和组 SID。 但是,不能从 SID 中删除仅拒绝属性,也不能使用 AdjustTokenGroups 在仅拒绝 SID 上设置SE_GROUP_ENABLED属性。
若要获取 SID 的属性,请使用 TokenGroups 值调用 GetTokenInformation 函数。 该函数返回一个由 SID_AND_ATTRIBUTES 结构构成的数组,这些结构标识组 SID 及其属性。