Active Directory中OU能否置于非OU对象下?技术疑问
Active Directory中OU的层级限制与LDAP搜索问题
我需要通过LDAP搜索Active Directory(AD)中的所有OU以实现同步,但遇到了异常结构问题,示例结构如下:
-[OU] officeA --[OU] officeA2 --[OU] officeA3 -[OU] officeB --[G] ZXC ---[OU] officeB3
其中[G] ZXC为随机示例,我想了解何种情况下OU会存在于非OU对象之下。我曾尝试在Active Directory用户和计算机中,将OU添加至用户和组下,但均失败。
2023/08/29 补充提问
OU只能置于OU之下吗?是否存在通过策略将OU改为非OU对象的可能?(我使用GOLANG的func (l *Conn) SearchWithPaging进行搜索)
问题解答
- 在Active Directory的默认规则里,OU(组织单元)只能被创建在域根或者其他OU之下,无法直接放置在用户、组这类非OU对象下面。你在AD用户和计算机中操作失败是正常的,这是AD固有的对象层级限制。
- 你看到的OU出现在组下方的异常结构,大概率是LDAP搜索结果的解析或展示逻辑问题,而非AD实际结构如此:
- 可能是搜索时未过滤对象类型,误将组的成员关联信息解析成了层级结构,但组本身不能作为OU的父容器。
- 极端情况下,若有人通过ADSI Edit这类底层目录编辑工具强制修改了OU的父对象属性,可能会出现这种异常,但这属于违规操作,会破坏AD架构一致性,微软官方并不支持此类操作。
- 不存在通过策略将OU改为非OU对象的可能。OU的对象类型是
organizationalUnit,这是AD架构中定义的固定类,策略无法修改对象的核心类型属性。 - 针对Go的
SearchWithPaging搜索,建议优化搜索逻辑:- 明确设置过滤条件为
objectClass=organizationalUnit,只返回OU对象。 - 通过
distinguishedName属性来解析OU的层级关系,而非依赖搜索结果的默认返回顺序或层级展示,避免误判父容器。
- 明确设置过滤条件为
内容的提问来源于stack exchange,提问作者R-Ping
相关产品推荐
相关产品推荐

