LDAP_MATCHING_RULE_IN_CHAIN(1.2.840.113556.1.4.1941)查询异常求助
排查LDAP递归查询组时无法返回外部安全主体的思路
你遇到的问题是使用memberOf:1.2.840.113556.1.4.1941:=CN=Backup Operators,CN=Builtin,DC=test,DC=env(即LDAP_MATCHING_RULE_IN_CHAIN递归匹配规则)查询组成员时,仅能返回Authenticated Users和Leea,所有外部安全主体(Foreign Security Principals,简称FSP)无法被匹配。下面是几个针对性的排查方向:
1. 先确认组的实际成员构成
- 打开Active Directory Users and Computers(ADUC),定位到Backup Operators组,切换到成员和成员属于标签,核实那些外部安全主体确实是该组的直接或间接成员。注意FSP的格式通常为
CN=S-1-5-21-xxxxxx-xxxxxx-xxxxxx-xxxx,CN=ForeignSecurityPrincipals,DC=test,DC=env,确保它们没有被误移除。
2. 验证FSP对象的存在性与属性
- 先尝试直接查询FSP对象,确认它们在AD中存在且可被读取:
用PowerShell执行:
查看返回结果中,Get-ADObject -Filter 'objectClass -eq "foreignSecurityPrincipal"' -SearchBase "CN=ForeignSecurityPrincipals,DC=test,DC=env" -Properties memberOf,objectSidmemberOf属性是否包含目标组CN=Backup Operators,CN=Builtin,DC=test,DC=env的DN。如果FSP的memberOf没有指向该组,那递归查询自然无法匹配。
3. 检查查询权限
- 确保执行查询的账号拥有读取
CN=ForeignSecurityPrincipals容器下对象的权限,以及读取这些对象的memberOf、objectClass等核心属性的权限。部分场景下,默认权限可能限制了对跨域FSP的读取,可在ADUC中检查该容器的权限设置。
4. 对比递归与非递归查询结果
- 先跳过递归规则,直接查询组的
member属性来确认成员列表:
如果这个命令能返回那些FSP,但递归查询不行,说明问题出在Get-ADGroup "CN=Backup Operators,CN=Builtin,DC=test,DC=env" -Properties member | Select-Object -ExpandProperty memberLDAP_MATCHING_RULE_IN_CHAIN对FSP的处理逻辑上(比如该规则对FSP的SID解析存在局限)。
5. 排查工具显示限制
- 有些第三方LDAP工具会默认过滤
foreignSecurityPrincipal类型的对象,导致你看不到结果。建议用原生工具测试:- 使用
ldp.exe连接域控制器,执行查询后查看原始返回的属性; - 用PowerShell执行完整的递归查询:
查看结果中是否包含Get-ADObject -Filter 'memberOf:1.2.840.113556.1.4.1941:="CN=Backup Operators,CN=Builtin,DC=test,DC=env"' -Properties objectClass,distinguishedNameobjectClass为foreignSecurityPrincipal的对象。
- 使用
6. 检查域功能级别与信任关系
- 如果FSP来自其他域,先确认域之间的双向信任是否正常,DNS解析是否无误,域控制器之间的复制状态是否健康。
- 较低的域功能级别(如Windows Server 2003及以下)可能对LDAP递归匹配规则的支持有限,建议将域功能级别升级至Windows Server 2008或以上后重试。
内容的提问来源于stack exchange,提问作者Finn
相关产品推荐
相关产品推荐

