物件存取控制清單中的存取控制專案 (ACL) 可以屬於下列兩個類別之一:
- 有效的 ACL:此類別中的 ACE 會套用至 物件。
- 繼承 ACL:此類別中的 ACE 是由容器中建立的物件所繼承。
DACL 中的每個 ACE 都可以屬於一或多個類別。 ACE 所屬的類別是由 ACE 中設定的繼承控制旗標所決定。
您可以在 ACE 的 AceFlags 屬性中設定三個繼承控制旗標。
| 旗 | 描述 |
|---|---|
| ADS_ACEFLAG_INHERIT_ACE | 此旗標表示 ACE 是繼承 ACL 的一部分,而子物件會繼承此 ACE 的繼承控件旗標。 |
| ADS_ACEFLAG_NO_PROPAGATE_INHERIT_ACE | 此旗標表示 ACE 是繼承 ACL 的一部分,但不會將繼承控件旗標傳播至直接子物件(直接子系),而 ACE 在直接子物件上有效。 |
| ADS_ACEFLAG_INHERIT_ONLY_ACE | 此旗標表示 ACE 不是有效 ACL 的一部分。 如果未設定此旗標,則 ACE 是有效 ACL 的一部分。 此旗標適用於設定子物件可繼承的許可權,但不會影響容器的存取範圍。 例如,如果 ACE 是要由組織單位中的用戶物件繼承,則它可能不應該強制存取組織單位本身。 |
只有在 ADS_ACEFLAG_INHERIT_ACE 存在時,ADS_ACEFLAG_NO_PROPAGATE_INHERIT_ACE 和 ADS_ACEFLAG_INHERIT_ONLY_ACE 旗標才有意義。 這是因為 ADS_ACEFLAG_INHERIT_ACE 旗標會將繼承行為新增至可繼承的 ACE,但不會定義繼承的類型。 ADS_ACEFLAG_NO_PROPAGATE_INHERIT_ACE 和 ADS_ACEFLAG_INHERIT_ONLY_ACE 旗標會定義特定類型的繼承行為。
請務必記住,系統也會根據 ACE 的類型和狀態來設定下列旗標。
| 旗 | 描述 |
|---|---|
| ADS_ACEFLAG_INHERITED_ACE | 此旗標表示已繼承 ACE。 |
| ADS_ACEFLAG_VALID_INHERIT_FLAGS | 此旗標表示繼承旗標有效。 |
下表列出 ACE AceFlags 屬性之不同旗標組合的效果。
| 旗 | 對包含 ACE 的物件的影響 | 對直接子對象的影響 | 對直接子系下方對象的影響 |
|---|---|---|---|
| 未設定旗標。 | 有效的 ACE:ACE 會套用至 物件。 | ACE 不會繼承。 | ACE 不會繼承。 |
| ADS_ACEFLAG_INHERIT_ACE | 有效的 ACE | ACE 是繼承的。 ACE 是有效的 ACE。 |
ACE 是繼承的。 ACE 是有效的 ACE。 |
| | ADS_ACEFLAG_INHERIT_ACEADS_ACEFLAG_INHERIT_ONLY_ACE | 不是有效的 ACE:ACE 不適用於 物件。 | ACE 是繼承的。 ACE 是有效的 ACE。 |
ACE 是繼承的。 ACE 是有效的 ACE。 |
| | ADS_ACEFLAG_INHERIT_ACEADS_ACEFLAG_NO_PROPAGATE_INHERIT_ACE | 有效的 ACE | ACE 是繼承的,但沒有繼承旗標。 ACE 是有效的 ACE |
ACE 不會繼承。 |
| | ADS_ACEFLAG_INHERIT_ACEADS_ACEFLAG_INHERIT_ONLY_ACE | ADS_ACEFLAG_NO_PROPAGATE_INHERIT_ACE | 不是有效的 ACE。 | ACE 是繼承的,但沒有繼承旗標。 ACE 是有效的 ACE。 |
ACE 不會繼承。 |