简而言之 -- 使用ou:dn:=<val>
语法
对于提问者的问题,解决方法如下:
ldapsearch -b "DC=my,DC=super,DC=org" <other_options> "(|(ou:dc:=Staff)(ou:dc:=Vendors))"
原则上,您的情况比较棘手,因为OU值不会出现在用户的ldapsearch
输出中-- OU值是DN的一部分。
例如,在这里进行的搜索结果:
[root@pg data]
dn: cn=testuser2,ou=AU,ou=IIQ,dc=example,dc=org
cn: testuser2
displayName: pgtest
gidNumber: 500
givenName: testuser2
homeDirectory: /home/testuser2
loginShell: /bin/sh
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: top
userPassword:: e01ENX1GMnFxVVpDTjh4VVJveGg5bkJBcGF3PT0=
sn: testuser2
uidNumber: 1012
uid: testuser2
search: 2
result: 0 Success
没有ou:
行,因为OU属于dn:
行。因此,如果您在搜索中添加一个ou
,您会看到它是requesting: ou
而不是requesting: ALL
,但不会列出任何属性:
[root@pg data]
dn: cn=testuser2,ou=AU,ou=IIQ,dc=example,dc=org
search: 2
result: 0 Success
在OU上搜索会给你结果,但它们只是OU对象,而不是用户本身:
[root@pg data]
dn: ou=IN,dc=example,dc=org
ou: IN
objectClass: organizationalUnit
objectClass: top
dn: ou=AU,dc=example,dc=org
ou: AU
objectClass: organizationalUnit
objectClass: top
dn: ou=IN,ou=IIQ,dc=example,dc=org
objectClass: organizationalUnit
objectClass: top
ou: IN
dn: ou=AU,ou=IIQ,dc=example,dc=org
ou: AU
objectClass: organizationalUnit
objectClass: top
search: 2
result: 0 Success
然而,ldapsearch
允许您使用 ou:dn:=<val>
语法提取 DN 的部分内容:
[root@pg data]
dn: cn=testuser3,ou=AU,dc=example,dc=org
cn: testuser3
displayName: pgtest
dn: cn=testuser4,ou=IN,dc=example,dc=org
cn: testuser4
displayName: pgtest
dn: cn=testuser2,ou=AU,ou=IIQ,dc=example,dc=org
cn: testuser2
displayName: pgtest
dn: cn=testuser1,ou=IN,ou=IIQ,dc=example,dc=org
cn: testuser1
displayName: pgtest
dn: cn=testuser14,ou=IN,dc=example,dc=org
cn: testuser14
displayName: pgtest
search: 2
result: 0 Success
objectClasses
允许ou
属性,则可以在搜索过滤器中使用ou
属性。当然,这需要将ou
属性添加到相关条目中。这可能是一个有效的解决方案,因为AD不支持可扩展匹配过滤器的出色建议。 - Terry Gardner