访问控制继承

对象访问控制列表 (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_ACE和ADS_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_ACE ADS_ACEFLAG_INHERIT_ONLY_ACE 不是有效的 ACE:ACE 不适用于对象。 ACE 继承。 ACE 是一个有效的 ACE。
ACE 继承。 ACE 是一个有效的 ACE。
ADS_ACEFLAG_INHERIT_ACE | ADS_ACEFLAG_NO_PROPAGATE_INHERIT_ACE 有效的 ACE ACE 是继承的,但没有继承标志。 ACE 是有效的 ACE
ACE 不继承。
| ADS_ACEFLAG_INHERIT_ACE ADS_ACEFLAG_INHERIT_ONLY_ACE ADS_ACEFLAG_NO_PROPAGATE_INHERIT_ACE | 不是有效的 ACE。 ACE 是继承的,但没有继承标志。 ACE 是有效的 ACE。
ACE 不继承。