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。 如果繼承的 ACE 是僅限繼承的 ACE,則任何泛型許可權或泛型 SID 都會保持不變,以便在新一代子物件繼承 ACE 時適當地對應它們。

如果容器物件繼承的 ACE 在容器上同時有效,且可由其子系繼承,則容器可能會繼承兩個 ACE。 如果可繼承的 ACE 包含泛型資訊,就會發生這種情況。 容器會繼承僅繼承的 ACE,其中包含泛型資訊,以及泛型資訊已對應的僅限有效 ACE。

物件特定的 ACE具有InheritedObjectType成員,可包含 GUID 來識別可繼承 ACE 的物件類型。

如果未指定 InheritedObjectType GUID,則物件特定 ACE 的繼承規則與標準 ACE 相同。

如果指定 了 InheritedObjectType GUID,則如果已設定OBJECT_INHERIT_ACE,則 ACE 可由符合 GUID 的物件繼承,如果已設定CONTAINER_INHERIT_ACE,則由符合 GUID 的容器繼承。 請注意,目前只有 DS 物件支援特定物件 ACE,而 DS 會將所有物件類型視為容器。