5.4. ldapsearch、ldapdelete 和 ldapmodify 实用程序

ldapsearch - ldapsearch 是一个可以通过 shell 访问的 ldap_search(3) 库调用的接口。使用此实用程序在您的 LDAP 数据库后端搜索条目。

以下是调用 ldapsearch 的概要(请查看 ldapsearch 的 man 手册以了解每个选项的含义)

ldapsearch  [-n]  [-u]  [-v]  [-k]  
[-K]  [-t]  [-A] [-B] [-L] 
[-R] [-d debuglevel] [-F sep] [-f file] 
[-x] [-D binddn]  [-W]  [-w bindpasswd]  
[-h ldaphost]  [-p ldapport]   [-b searchbase]   
[-s base|one|sub] 
[-a never|always|search|find] [-l timelimit] 
[-z sizelimit] filter [attrs...] 

ldapsearch 打开与 LDAP 服务器的连接,进行绑定,并使用过滤器 filter 执行搜索。该过滤器应符合 RFC 1558 中定义的 LDAP 过滤器字符串表示形式。如果 ldapsearch 找到一个或多个条目,则检索由 attrs 指定的属性,并将条目和值打印到标准输出。如果未列出 attrs,则返回所有属性。

ldapsearch -x -b 'o=TUDelft,c=NL' 'objectclass=*' 

ldapsearch -b 'o=TUDelft,c=NL' 'cn=Rene van Leuken' 

ldasearch -u -b 'o=TUDelft,c=NL' 'cn=Luiz Malere' sn mail

-b 选项代表 searchbase(初始搜索点), -u 选项代表用户友好的输出信息, -x 选项用于指定简单身份验证。

ldapdelete - ldapdelete 是一个可以通过 shell 访问的 ldap_delete(3) 库调用的接口。使用此实用程序删除 LDAP 数据库后端上的条目。

以下是调用 ldapdelete 的概要(请查看 ldapdelete 的 man 手册以了解每个选项的含义)

ldapdelete   [-n]   [-v]  [-k]  [-K]  
[-c]  [-d debuglevel]  [-f file]  [-D binddn]  
[-W]  [-w passwd] [-h ldaphost] [-p ldapport] 
[dn]... 

ldapdelete 打开与 LDAP 服务器的连接,进行绑定,并删除一个或多个条目。如果提供一个或多个 dn 参数,则删除具有这些专有名称的条目。每个 dn 都应是 RFC 1779 中定义的字符串表示的 DN。如果未提供 dn 参数,则从标准输入(或在使用 -f 标志的情况下从文件)读取 DN 列表。

以下是一些 ldapdelete 用法的示例

ldapdelete 'cn=Luiz Malere,o=TUDelft,c=NL' 

ldapdelete -v 'cn=Rene van Leuken,o=TUDelft,c=NL' -D 'cn=Luiz Malere,o=TUDelft,c=NL' -W 

-v 选项代表 verbose 模式, -D 选项代表 Binddn(用于身份验证的 dn), -W 选项代表密码提示。

ldapmodify - ldapmodify 是一个可以通过 shell 访问的 ldap_modify(3) 和 ldap_add(3) 库调用的接口。使用此实用程序修改 LDAP 数据库后端上的条目。

以下是调用 ldapmodify 的概要(请查看 ldapmodify 的 man 手册以了解每个选项的含义)

ldapmodify   [-a]  [-b]  [-c]  [-r]  
[-n]  [-v]  [-k]  [-d debuglevel]  
[-D binddn]  [-W]  [-w passwd] 
[-h ldaphost] [-p ldapport] [-f file] 

ldapadd [-b] [-c] [-r] [-n] 
[-v]  [-k]  [-K]  [-d debuglevel]  
[-D binddn]  [-w passwd]  [-h ldaphost] 
[-p ldapport] [-f file] 

ldapadd 被实现为 ldapmodify 工具的硬链接。当作为 ldapadd 调用时,ldapmodify 的 -a(添加新条目)标志会自动打开。ldapmodify 打开与 LDAP 服务器的连接,进行绑定,并修改或添加条目。条目信息从标准输入或通过使用 -f 选项从文件读取。

以下是一些 ldapmodify 用法的示例

假设文件 /tmp/entrymods 存在并且包含以下内容

dn: cn=Modify Me, o=University of Michigan, c=US 
changetype: modify 
replace: mail 
mail: modme@terminator.rs.itd.umich.edu 
- 
add: title 
title: Grand Poobah 
- 
add: jpegPhoto 
jpegPhoto: /tmp/modme.jpeg 
- 
delete: description 
- 

命令

ldapmodify -b -r -f /tmp/entrymods 

将把 “Modify Me” 条目的 mail 属性的内容替换为值 “modme@terminator.rs.itd.umich.edu”,添加标题 “Grand Poobah”,并将文件 /tmp/modme.jpeg 的内容作为 jpegPhoto 添加,并完全删除 description 属性。

可以使用较旧的 ldapmodify 输入格式执行与上述相同的修改

cn=Modify Me, o=University of Michigan, c=US 
mail=modme@terminator.rs.itd.umich.edu 
+title=Grand Poobah 
+jpegPhoto=/tmp/modme.jpeg 
-description 

再加上以下命令

ldapmodify -b -r -f /tmp/entrymods 

假设文件 /tmp/newentry 存在并且包含以下内容

dn: cn=Barbara Jensen, o=University of Michigan, c=US 
objectClass: person 
cn: Barbara Jensen 
cn: Babs Jensen 
sn: Jensen 
title: the world's most famous manager 
mail: bjensen@terminator.rs.itd.umich.edu 
uid: bjensen 

命令

ldapadd -f /tmp/entrymods 

如果条目尚不存在,则将添加 dn 为 cn=Barbara Jensen, o=University of Michigan, c=US 的条目。如果此 dn 的条目已存在,该命令将指出错误,并且不会覆盖该条目。

假设文件 /tmp/newentry 存在并且包含以下内容

dn: cn=Barbara Jensen, o=University of Michigan, c=US 
changetype: delete 

命令

ldapmodify -f /tmp/entrymods 

将删除 Babs Jensen 的条目。

-f 选项代表 file(从文件而不是标准输入读取修改信息), -b 选项代表 binary(输入文件中任何以 '/' 开头的值都将被解释为二进制文件), -r 代表 replace(默认情况下替换现有值)。