访问控制继承

(ACL) 对象访问控制列表中 (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_ACEADS_ACEFLAG_INHERIT_ONLY_ACE标志才有意义。 这是因为 ADS_ACEFLAG_INHERIT_ACE 标志会将继承行为添加到可继承的 ACE,但不定义继承类型。 ADS_ACEFLAG_NO_PROPAGATE_INHERIT_ACEADS_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_ACE | ADS_ACEFLAG_INHERIT_ONLY_ACEADS_ACEFLAG_NO_PROPAGATE_INHERIT_ACE 不是有效的 ACE。 ACE 继承,但没有继承标志。 ACE 是有效的 ACE。
ACE 未继承。