问题描述
我对LDAP完全陌生,并且刚刚开始。我已经看到了一些示例,据我所知,这些示例已按照我的方式使用了查询,但就我而言,它似乎无法正常工作。
我有一个这样的层次结构(我正在使用Apache Directory Studio):
如果我用ou=scientists
双击对象,则其信息将弹出,如下所示:
因此,这个拥有ou=scientists
的小组有一个cn=Scientists
(我已经检查过,科学家之后没有空格。
我只想用ou=scientists
在小组中找到东西。
有1种方法可以做到:
ou=scientists,dc=example,dc=com
给出了预期的结果。
但是我希望能够通过ou=scientists
而不是其ou
值,而是通过cn
值来查找组中的内容。所以我对自己想,可以使用:cn=Scientists,dc=com
但这将产生0个结果。我想我在这里没有重点。我该怎么办?
解决方法
@SeanGoudarzi我认为LDAP模型的工作方式存在一些误解。 如果要查找给定条目的子条目,则需要2个搜索。 一种找到基本条目,另一种找到子条目
要查找具有所谓的“相对专有名称” ou=scientists
的条目,您需要进行类似的搜索
ldapsearch ... -b dc=example,dc=com -s sub cn=scientists dn
然后
ldapsearch ... -b DN_RESULT_FORM_PREVIOUS_SEARCH -s one objectclass=* dn
这会给你
dn: ou=italians,ou=scientiests,dc=example,dc=com
还是您想要实现其他目标?
,查询LDAP目录时要考虑很多事情。
在您的情况下,您想从一个分支(在LDAP中调用搜索库dn)中查找,并在该分支的所有子级中应用过滤器以选择所需的子项:
ldapsearch ... -b <search base dn> -s sub "<FILTER>"
所以对于您的DIT:
ldapsearch ... -b dc=example,dc=com -s sub "(&(objectClass=groupOfUniqueNames)(cn=scientists))"
如果您想更深入地使用ldap,请考虑学习搜索请求在LDAP中的工作方式:https://ldapwiki.com/wiki/SearchRequest