active directory对象权限继承通过ace标志、对象类型和安全边界三重控制实现:标准继承(inherit_ace)、一级继承(no_propagate_inherit_ace)和仅继承(inherit_only_ace);受保护安全主体和adminsdholder对象默认禁用继承;特定对象类型继承通过objecttype与inheritedobjecttype字段实现精细化委派;继承可手动关闭,但adminsdholder同步仍强制生效。
active directory 中的对象权限继承,核心是让上层容器(如域、ou)设置的权限自动“流”到其子对象(用户、组、计算机等),避免逐个配置。但这个过程不是无条件传递,而是受 ace 标志、对象类型和安全边界三重控制。
继承如何被触发与限制
一个访问控制项(ACE)是否向下传递,取决于它的 AceFlags 设置:
- ADS_ACEFLAG_INHERIT_ACE:标准继承标志,该 ACE 将出现在所有下级子对象上(包括子 OU 及其内部对象)。
- ADS_ACEFLAG_NO_PROPAGATE_INHERIT_ACE:仅继承一级,比如在 OU 上设此标志,它只影响该 OU 下的直接子对象(如用户、组),但不会继续传给子 OU 内部的对象。
- ADS_ACEFLAG_INHERIT_ONLY_ACE:该 ACE 在当前对象上不生效,只用于向下继承——常用于“模板化”控制,例如在 OU 上定义一条“仅继承”的“重置密码”权限,确保所有子用户都能被管理,但 OU 自身不因此获得额外能力。
哪些对象默认不继承?
并非所有 AD 对象都参与继承流程。以下两类对象会自动禁用继承,且无法通过常规方式开启:
- 受保护的安全主体:包括 Domain Admins、Enterprise Admins、Schema Admins、Administrators 等内置高权限组,以及所有被 SDProp 进程标记为受保护的帐户(如 Administrator 用户)。
-
AdminSDHolder 对象本身:位于
CN=AdminSDHolder,CN=System,DC=...,其 ACL 是所有受保护对象的“权威模板”,自身禁止继承,防止父容器权限意外覆盖。
这类对象的权限由 SDProp 进程每 60 分钟强制同步一次,与所在 OU 位置无关。
特定对象类型继承(Object-Specific Inheritance)
这是精细化委派的关键机制:你可以在一个 OU 上设置一条只对“用户对象”生效的 ACE,而对同级的“组”或“计算机”完全无效。
实现方式依赖于 ACE 中的 objectType 和 inheritedObjectType 字段:
- 设置 inheritedObjectType = user,表示该 ACE 只继承给类型为
user的子对象; - 若同时指定 objectType = pwdLastSet,则权限仅作用于用户对象的
pwdLastSet属性,不影响其他属性读写。
这种组合让“重置密码”、“修改电话号码”等操作可以精确委派,而不暴露整个用户对象的控制权。
继承中断与手动覆盖
继承可被显式关闭,常见场景包括:
- 在某个 OU 或对象上右键 → “属性” → “安全” → “高级” → 取消勾选“从父对象继承权限”,系统会提示是否复制现有权限或全部移除;
- 一旦禁用继承,该对象及其子树不再接收上级 ACE,后续所有权限必须单独配置;
- 注意:禁用继承后,AdminSDHolder 同步仍会强制重置受保护对象的权限,即使它们已脱离继承链。











