ldapsearch:搜索过滤器中的objectClass时没有结果

时间:2016-12-19 13:36:57

标签: openldap

我有一个带有translucent_proxy

的open-ldap-server配置

这是为了丰富公司ldap服务器条目的本地属性。 一般来说它工作正常。

我有一个公司ldap服务器:ldap.c.com,这个服务器 dc=company,dc=com和通常的子树(ou=People,group

我有一个本地ldap服务器:ldap.my.c.com,这个服务器覆盖了ou=People,dc=company,dc=com

所以我可以问

ldapsearch -x -H ldap://ldap.c.com/ (uid=frank) mail mailLocalAddress 

并将获得类似

的内容
dn:uid=frank,ou=people,dc=company,dc=com
mail: f.name@company.com

当向我的本地ldap服务器询问相同的问题时

ldapsearch -x -H ldap://ldap.my.c.com/ (uid=frank) mail mailLocalAddress 

我会得到我丰富的

结果
dn:uid=frank,ou=people,dc=company,dc=com
mail: f.name@company.com
mail: frank@my.c.com
mailLocalAddress: frank@my.c.com
mailLocalAddress: nick@my.c.com

FINE!

但是在过滤规则中请求任何objectClass时

ldapsearch -x -H ldap://ldap.my.c.com/ (&(uid=frank)(objectClass=posixAccount)) mail mailLocalAddress

根本没有给我任何结果:

#search result
search: 2
result: 0 success

但是记录确实具有顶级的对象类,Person,inetorgPerson,posixAccount等等。 那么我可能做错了什么?

1 个答案:

答案 0 :(得分:0)

看起来你正在进行未经身份验证的ldapsearch,这可能成为问题。首先尝试验证是否可以通过以下方式查看objectClasses:

ldapsearch -x -H ldap://ldap.my.c.com/ "(uid=frank)" objectClass

如果这没有给你输出你可能有一些acl设置,这禁止你看到它。您可以在本地检查它们(取决于您的设置):

sudo ldapsearch -LLLQY EXTERNAL -H ldapi:/// -b cn=config "(olcDatabase=hdb)" olcAccess

在那里你可以看到谁有权访问这些属性,并且可以使用经过身份验证的ldapsearch(也取决于你的设置):

ldapsearch -x -H ldap://ldap.my.c.com/ -WD "uid=frank,ou=people,dc=company,dc=com" "(&(uid=frank)(objectClass=posixAccount))" mail mailLocalAddress