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