Platform SDK: Active Directory, ADSI, and Directory Services |
ACEs in an object's ACL can belong to one of two categories:
Each ACE in the DACL can be in one or more categories. The categories for where an ACE belongs are determined by the inheritance control flags set in the ACE.
There are three inheritance control flags that can be set in the AceFlags property of an ACE:
If this flag is not set, then the ACE is part of the effective ACL. This flag is useful for setting permissions inheritable by subobjects, but do not affect accessibility of the container itself. For example, if an ACE is intended to be inherited by user objects in a organizational unit, there is a good chance that it should not be enforced for access to the organizational unit itself.
The ADS_ACEFLAG_NO_PROPAGATE_INHERIT_ACE and ADS_ACEFLAG_INHERIT_ONLY_ACE flags are meaningful only if ADS_ACEFLAG_INHERIT_ACE is present. This is because the ADS_ACEFLAG_INHERIT_ACE flag adds inheritance behavior to an inheritable ACE but does not define the type of inheritance. The ADS_ACEFLAG_NO_PROPAGATE_INHERIT_ACE and ADS_ACEFLAG_INHERIT_ONLY_ACE flags define a specific type of inheritance behavior.
Note that the system also sets the following flags based on the type and state of the ACE:
The following table shows the effects of the different flag combinations for the AceFlags property of an ACE.
AceFlags | Effect on object containing the ACE | Effect on direct child objects | Effect on objects below direct children |
---|---|---|---|
No flags set. | Effective ACE: ACE applies to the object. | ACE is not inherited. | ACE is not inherited. |
ADS_ACEFLAG_INHERIT_ACE | Effective ACE | ACE is inherited.
ACE is an effective ACE. |
ACE is inherited.
ACE is an effective ACE. |
ADS_ACEFLAG_INHERIT_ACE | ADS_ACEFLAG_INHERIT_ONLY_ACE | Not an Effective ACE: ACE does not apply to the object. | ACE is inherited.
ACE is an effective ACE. |
ACE is inherited.
ACE is an effective ACE. |
ADS_ACEFLAG_INHERIT_ACE | ADS_ACEFLAG_NO_PROPAGATE_INHERIT_ACE | Effective ACE | ACE is inherited but without inheritance flags.
ACE is an Effective ACE |
ACE is not inherited. |
ADS_ACEFLAG_INHERIT_ACE | ADS_ACEFLAG_INHERIT_ONLY_ACE | ADS_ACEFLAG_NO_PROPAGATE_INHERIT_ACE | Not an Effective ACE. | ACE is inherited but without inheritance flags.
ACE is an Effective ACE. |
ACE is not inherited. |