3

假设您有一个具有以下结构的 LDAP:

dc=corp,dc=com
|--dc=security
   |--ou=users
      |--ou=corporate
      |  |--ou=it
      |     |--it-user1
      |     |--it-user2
      |--user1
      |--user2
      |--user3

我需要一个搜索查询来查看用户 ou 下的所有条目,包括企业和它下的条目。

目前我正在尝试以下方法:

uid=it-user2,ou=users,dc=security,dc=corp,dc=com

搜索范围设置为子树。我的印象是子树范围会导致 LDAP 递归地搜索整个树,但似乎并非如此。但是,如果我像下面那样将完整路径添加到搜索中,则会找到该条目。

uid=it-user2,ou=it,ou=corporate,ou=users,dc=security,dc=corp,dc=com

有人可以告诉我我哪里出错了吗?谢谢。

4

3 回答 3

2

您需要将搜索上下文(即搜索库)设置为存储对象/条目的位置。根据您的示例,搜索上下文是ou=users,dc=security,dc=corp,dc=com. 当您将搜索范围设置为子树时,它应该找到与您的条件匹配的条目(即搜索过滤器)。例如,

ldapsearch -h SERVER -b ou=users,dc=security,dc=corp,dc=com -s sub "(uid=it-user2)"

当然,使用“子树”搜索范围,您甚至可以将搜索上下文设置为更高级别的容器(例如,dc=security,dc=corp,dc=com)。只要您的条目符合过滤器指定的条件,您的条目仍会被找到。由于您正在搜索ou=users容器下的所有条目,因此您的查询可能如下所示:

ldapsearch -h SERVER -b ou=users,dc=security,dc=corp,dc=com -s sub "(uid=*)"

或者

ldapsearch -h SERVER -b ou=users,dc=security,dc=corp,dc=com -s sub "(objectclass=*)"
于 2013-05-16T03:57:41.530 回答
1

我为此奋斗了好几个小时 - CN=Users .Net 中的 LDAP 目录条目 - 不使用 OU=Users

这可能看起来很愚蠢和愚蠢,但是 Active Directory 中的默认树设置不是 OU=Users ,dc=domain,dc=com 而是CN=Users ,dc=domain,dc=com (注意 CN= 不是 OU=为用户。)

于 2014-01-14T03:25:23.587 回答
0

uid=it-user2,ou=users,dc=security,dc=corp,dc=com不存在。LDAP 客户端必须为存在的搜索请求提供一个基础对象。

也可以看看

于 2013-05-15T17:54:54.640 回答