ACE 继承规则
系统根据一组继承规则自动将可继承 访问控制条目(ACE)传播到子对象。 系统根据 DACL 中 ACE 的首选顺序,将继承的 ACE 放置在子级的自主访问控制列表 (DACL) 中。
容器和非容器子对象继承的 ACE 因继承标志的组合而异。 这些继承规则适用于 DACL 和 系统访问控制列表(SCL)。
父 ACE 标志 | 对子 ACL 的影响 |
---|---|
仅限于 OBJECT_INHERIT_ACE | 非容器子对象:作为有效的 ACE 继承。 容器子对象:除非还设置了 NO_PROPAGATE_INHERIT_ACE 位标志,否则容器将继承仅继承的 ACE。 |
仅限于 CONTAINER_INHERIT_ACE | 非容器(不包含子对象)对象:对子对象没有影响。 容器子对象:子对象继承有效的 ACE。 除非还设置了 NO_PROPAGATE_INHERIT_ACE 位标志,否则继承的 ACE 是可继承的。 |
CONTAINER_INHERIT_ACE 和 OBJECT_INHERIT_ACE | 非容器子对象:作为有效的 ACE 继承。 容器子对象:子对象继承有效的 ACE。 除非还设置了 NO_PROPAGATE_INHERIT_ACE 位标志,否则继承的 ACE 是可继承的。 |
未设置继承标志 | 对子容器或非容器对象没有影响。 |
如果继承的 ACE 是子对象的有效 ACE,则系统将任何通用权限映射到子对象的特定权限。 同样,系统将通用 安全标识符(例如CREATOR_OWNER)映射到相应的 SID。 如果继承的 ACE 是仅继承的 ACE,则任何通用权限或通用 SID 保持不变,以便在下一代子对象继承 ACE 时适当映射它们。
对于容器对象继承对容器有效且可由其后代继承的 ACE 的情况下,容器可以继承两个 ACE。 如果可继承的 ACE 包含泛型信息,则会出现这种情况。 容器继承一个仅继承的 ACE,其中包含通用信息,以及一个仅有效的 ACE,在其中映射了通用信息。
特定于对象的 ACE 具有一个 InheritedObjectType 成员,该成员可以包含 GUID 来标识可以继承 ACE 的对象的类型。
如果未指定 InheritedObjectType GUID,则特定于对象的 ACE 的继承规则与标准 ACE 的继承规则相同。
如果指定了 InheritedObjectType GUID,则 ACE 可由设置OBJECT_INHERIT_ACE时与 GUID 匹配的对象继承;如果设置了 CONTAINER_INHERIT_ACE,则由与 GUID 匹配的容器继承。 请注意,目前只有 DS 对象支持特定于对象的 ACE,DS 会将所有对象类型视为容器。