Ldap搜索和范围限制

标签 ldap openldap

我对ldapsearch有疑问命令。

我想使用 ldapsearch 二进制文件列出 LDAP 组中有限数量的成员。例如,我只想获取请求的 1 到 50 名成员。

ldapsearch -x -h <ldap_serv_addr> -p <ldap_port> -b "<base-dn>" "(&(|(objectClass=inetOrgPerson)(objectClass=user))(memberOf=<group_dn>))"

此请求为我提供了(并且效果很好)组的所有成员。我只想要其中的“范围”。

我知道我必须使用类似 member;range=1-50 的东西,但我不知道将其放在 ldapsearch 命令中的何处。

最佳答案

当您返回一个对象而不是一组对象的多值属性时,使用具有范围的成员是一种解决方案。在此示例中,我正在搜索特定组并返回 50 个成员的组(您的组的正确 objectClass 可能会有所不同,请检查一个对象。或者,如果它是唯一名称,则只需从过滤器中省略 objectClass):

ldapsearch -x -h <ldap_serv_addr> -p <ldap_port> -b "<base-dn>" "(&(objectClass=groupOfUniqueNames)(cn=<groupCN>))" "member;range=0-50"

在您的示例查询中,您要求识别将 memberOf 设置为 groupDN 的对象 - 这不是对象上的单个多值属性,而是一组对象。您可以使用分页来控制设置对象的大小。 如何请求分页结果取决于客户端/语言(并且某些 LDAP 服务器不支持分页操作)。使用 ldapsearch,并假设 LDAP 服务器支持分页查询,您的命令行将是:

ldapsearch -x -h <ldap_serv_addr> -p <ldap_port> -E pr50/prompt -b "<base-dn>" "(&(|(objectClass=inetOrgPerson)(objectClass=user))(memberOf=<group_dn>))"

-E pr50/prompt 将页面大小设置为 50 并提示继续下一页。

我不知道有什么方法可以在第一页结果之后以非交互方式停止,并且搜索组并返回其成员列表更直接。

关于Ldap搜索和范围限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57661754/

相关文章:

Java-LDAP : Why do we need hardcoded Admin user credentials for LDAP binding

C++ 使用 ldap.h 中的 ldap_bind

Grails OpenLDAP 登录失败 : Sorry, 我们无法找到具有该用户名和密码的用户

java - 如何在 LDAP 上下文上设置放松控制

ldap - OpenLdap - 如何使属性 uidNumber 自动生成?

Python LDAP - 将用户移动到不同的 OU

active-directory - 为什么不总是在 LDAP 搜索过滤器中使用 (objectClass=*)?

ldap - openldap为用户添加邮件属性

ldap - 有没有办法在 LDAP 查询中按长度进行搜索?

ios - 如何将c程序转换为完全可移植的ios