10.4. LDAP 搜索(ldapsearch)示例


以下示例提供了用于通过目录搜索的最常见 'ldapsearch'es。

先决条件

  • 您可以对目录中的所有条目执行搜索。
  • 您已将目录配置为支持匿名搜索和读操作。因此,您不需要在命令中使用 -W-D 选项来提供任何绑定信息。有关匿名访问的更多信息,请参阅 授予匿名访问
  • 服务器使用默认端口号 389。您不需要在搜索请求中指定它。
  • 服务器具有 server.example.com 主机名。
  • 您在端口 636 上为服务器启用 TLS,即默认的 LDAPS 端口号。
  • 目录服务器将所有数据存储在 dc=example,dc=com 后缀下。

10.4.1. 返回所有条目

以下 LDAP 搜索返回目录中的所有条目:

# ldapsearch -H ldap://server.example.com -b "dc=example,dc=com" -s sub -x "(objectclass=*)"
Copy to Clipboard Toggle word wrap

使用 (objectclass swig)搜索过滤器返回目录中的每个条目。每个条目都必须有一个对象类,并且 objectclass 属性始终被索引。

10.4.2. 在命令行中指定搜索过滤器

您可以在命令上直接指定搜索过滤器,方法是在引号中使用过滤器("filter")。如果您在命令中提供过滤器,请不要指定 the -f 选项。例如,要指定 "cn=babs jensen",请输入:

# ldapsearch -H ldap://server.example.com -b "dc=example,dc=com" -s sub -x "cn=babs jensen"
Copy to Clipboard Toggle word wrap

10.4.3. 搜索 Root DSE 条目

root DSE 是一个特殊条目,其中包含目录服务器支持的所有后缀。通过提供搜索基础 ""、搜索范围 基础 和过滤器 "objectclasskcs" 来搜索此条目,例如:

# ldapsearch -H ldap://server.example.com -x -b "" -s base "objectclass=*"
Copy to Clipboard Toggle word wrap

10.4.4. 搜索模式条目

cn=schema 条目是一个特殊条目,其中包含有关目录模式的信息,如对象类和属性类型。

要列出 cn=schema 条目的内容,请输入以下命令之一:

# ldapsearch -x -o ldif-wrap=no -b "cn=schema" \ '(objectClass=subSchema)' -s sub objectClasses attributeTypes matchingRules \ matchingRuleUse dITStructureRules nameForms ITContentRules ldapSyntaxes
Copy to Clipboard Toggle word wrap

或者

# ldapsearch -x -o ldif-wrap=no -b "cn=schema" \ '(objectClass=subSchema)' -s sub "+"
Copy to Clipboard Toggle word wrap

10.4.5. 使用 LDAP_BASEDN 变量

要简化搜索,您可以使用 LDAP_BASEDN 环境变量设置搜索基础。您可以设置 LDAP_BASEDN,而不是使用带有 -b 选项的 ldapsearch 命令。有关设置环境变量的更多信息,请参阅操作系统文档。

LDAP_BASEDN 设置为目录后缀值。由于目录后缀等于目录中的 root 条目,因此所有搜索都从目录 root 条目开始。

例如,要将 LDAP_BASEDN 变量设置为 dc=example,dc=com,并在目录中搜索 cn=babs jensen,请输入:

# export LDAP_BASEDN="dc=example,dc=com"

# ldapsearch -H ldap://server.example.com -x "cn=babs jensen"
Copy to Clipboard Toggle word wrap

命令使用默认的 scope sub,因为未提供 来指定范围。

10.4.6. 显示属性子集

ldapsearch 命令以 LDIF 格式返回所有搜索结果。默认情况下,ldapsearch 返回条目可分辨名称(DN)以及允许用户读取的所有属性。您可以设置目录访问控制,以允许用户只读取任何给定目录条目上的属性子集。

目录服务器默认不返回操作属性。要在搜索操作后返回操作属性,请在 search 命令中明确指定这些属性,或使用 + 参数返回所有操作属性。如需更多信息,请参阅搜索操作属性

您可以通过在搜索过滤器后在命令行中指定所需的属性,将返回的属性限制为几个特定的属性。

例如,要显示目录中每个条目的 cnsn 属性,请输入:

# ldapsearch -H ldap://server.example.com -b "dc=example,dc=com" -s sub -x "(objectclass=*)" sn cn 
Copy to Clipboard Toggle word wrap

10.4.7. 搜索操作属性

操作属性是目录服务器设置自身的特殊属性。目录服务器使用操作属性来执行维护任务,如处理访问控制指令。这些属性显示有关条目的具体信息,如最初创建此条目的时间以及创建它的用户的名称。

您可以对 目录中的每个条目使用操作属性,即使属性专门为条目的对象类定义。

常规 ldapsearch 命令不返回操作属性。根据 RFC3673,使用 + 返回搜索请求中的所有操作属性:

# ldapsearch -H ldap://server.example.com -b "dc=example,dc=com" -s sub -x "(objectclass=*)" '+' 
Copy to Clipboard Toggle word wrap

要只返回某些定义的操作属性,请在 ldapsearch 请求中明确指定它们:

# ldapsearch -H ldap://server.example.com -b "dc=example,dc=com" -s sub -x "(objectclass=*)" creatorsName createTimestamp modifiersName modifyTimestamp 
Copy to Clipboard Toggle word wrap

有关操作属性的完整列表,请参阅 操作属性和对象类

注意

要返回所有常规条目属性以及指定的操作属性,除了您列表的操作属性外,还需要使用特殊的搜索属性 "*"

# ldapsearch -H ldap://server.example.com -b "dc=example,dc=com" -s sub -x "(objectclass=*)" "*" aci
Copy to Clipboard Toggle word wrap

请注意,您必须在引号中包含星号 HEKETI,以防止 shell 对其进行解释。

10.4.8. 使用文件指定搜索过滤器

您可以在文件中指定搜索过滤器,而不是在命令行中输入它们。

在文件中的单独行中指定每个搜索过滤器。ldapsearch 命令按文件中出现的顺序运行每个搜索。

例如,该文件包含以下过滤器:

sn=example
givenname=user
Copy to Clipboard Toggle word wrap

ldapsearch 命令首先找到将 surname 设置为 example 的所有条目,然后将 givenname 设置为 用户 的所有条目。如果搜索请求找到与两个搜索条件匹配的条目,则返回条目两次。

在以下搜索中,过滤器在名为 searchdb 的文件中指定:

# ldapsearch -H ldap://server.example.com -x -f searchdb 
Copy to Clipboard Toggle word wrap

您可以通过在搜索行末尾指定属性名称来限制返回的属性集合。例如,以下 ldapsearch 命令执行搜索,但只返回每个条目的 DN 和 givennamesn 属性:

# ldapsearch -H ldap://server.example.com -x -f searchdb sn givenname
Copy to Clipboard Toggle word wrap

10.4.9. 指定在搜索过滤器中包含逗号的 DN

当搜索过滤器中的 DN 包含其值的逗号时,search 命令必须使用反斜杠(\)转义逗号。例如,要在 example.com Bolivia, S.A. subtree 中查找每个人,请输入:

# ldapsearch -H ldap://server.example.com -x -s base -b "l=Bolivia\, S.A.,dc=example,dc=com" "objectclass=*"
Copy to Clipboard Toggle word wrap

10.4.10. 在过滤器中使用 nsRole virtual 属性

在以下示例中,ldapsearch 命令搜索包含所有用户条目的 DN,这些条目包含设置为 managed_role 值的 nsrole 属性:

# ldapsearch -H ldap://server.example.com -x -b "dc=example,dc=com" "(nsrole=cn=managed_role,dc=example,dc=com)" dn
Copy to Clipboard Toggle word wrap

10.4.11. 使用客户端证书绑定到目录服务器

有关基于证书的身份验证的更多信息,请参阅配置基于证书的身份验证

10.4.12. 使用语言匹配规则搜索

要在搜索过滤器中显式提交匹配规则,请在属性后插入匹配的规则:

attr:matchingRule:=value
Copy to Clipboard Toggle word wrap

匹配规则通常用于搜索国际化的目录。以下命令在 Swedish (2.16.840.1.113730.3.3.2.46.1)匹配规则中的 N4709 后搜索部门号。

departmentNumber:2.16.840.1.113730.3.3.2.46.1:=>= N4709
Copy to Clipboard Toggle word wrap

有关执行国际化搜索的更多信息,请参阅 搜索国际化的目录

10.4.13. 查找用户所属的组

要查找用户 uid=jdoe,ou=people,dc=example,dc=com 是成员的所有直接或间接组,请输入:

# ldapsearch -D "cn=Directory Manager" -W -H ldap://server.example.com -xLL -b "dc=example,dc=com" "(member:1.2.840.113556.1.4.1941:=uid=jdoe,ou=people,dc=example,dc=com)" dn
Copy to Clipboard Toggle word wrap

带有 inchainMatch 匹配规则 的搜索不支持 匿名访问。有关使用 inchainMatch 匹配规则的更多详细信息,请参阅 使用 inchainMatch 匹配规则来查找 LDAP 条目的 ancestry

10.4.14. 查找组成员

要查找 marketing 组的所有直接或间接成员,请输入:

# ldapsearch -D "cn=Directory Manager" -W -H ldap://server.example.com -xLL -b "dc=example,dc=com" "(memberof:1.2.840.113556.1.4.1941:=cn=marketing,ou=groups,dc=example,dc=com)" dn
Copy to Clipboard Toggle word wrap

带有 inchainMatch 匹配规则 的搜索不支持 匿名访问。有关使用 inchainMatch 匹配规则的更多详细信息,请参阅 使用 inchainMatch 匹配规则来查找 LDAP 条目的 ancestry

10.4.15. 使用位字段值搜索属性

位搜索使用位 AND 或 bitwise OR 匹配规则对带有位字段的值执行位搜索操作。

注意

位字段的值的属性在 LDAP 中不常见。默认目录服务器模式不使用位字段作为属性语法。但是,几个 LDAP 语法支持整数样式的值。您可以定义自定义属性来使用 bit 字段值。应用程序可以使用自定义属性来对位字段值执行位操作。

AND 匹配规则(1.2.840.113556.1.4.803)检查在 bit 字段属性值中是否设置了断言值中指定的位。类似于等式搜索。以下示例将 userAccountControl 值设置为代表 2 的位:

"(UserAccountControl:1.2.840.113556.1.4.803:=2)"
Copy to Clipboard Toggle word wrap

以下示例显示 userAccountControl 值必须具有值 6 (位 24)中设置的所有位:

"(UserAccountControl:1.2.840.113556.1.4.803:=6)”
Copy to Clipboard Toggle word wrap

位位 OR 匹配规则(1.2.840.113556.1.4.804)检查断言字符串中的任何位是否在属性值中表示。它类似于子字符串搜索。在本例中,UserAccountControl 值必须在 6 的 bit 字段中设置的任何位,这表示属性值可以是 246

"(UserAccountControl:1.2.840.113556.1.4.804:=6)"
Copy to Clipboard Toggle word wrap

您可以用位搜索 Windows-Linux 集成,例如使用 Samba 文件服务器。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat