OpenLDAP 提供一系列工具,可用于在 LDAP 目录中管理数据。下文简要说明了四种最重要的工具,分别对储存的数据执行添加、删除、搜索和修改等操作。
在 /etc/openldap/lsapd.conf 中正确配置 LDAP 服务器并且准备就绪后(即已配置好 suffix、directory、rootdn、rootpw 和 index 这些项之后),接下来可以输入记录。OpenLDAP 为此任务提供了 ldapadd 命令。如果可行,最好以捆绑方式向数据库添加对象,这是较为实用的做法。LDAP 能够为此处理 LDIF 格式(LDAP 数据交换格式)。LDIF 文件是一个简单的文本文件,可以包含任意数量的属性和值对。请参见 slapd.conf 中声明的纲要文件,了解可用的对象类和属性。为 图 36.1 “LDAP 目录的结构” 中的示例创建大致框架的 LDIF 文件将如 例 36.7 “LDIF 文件示例” 所示:
例 36.7. LDIF 文件示例
# The Organization dn: dc=example,dc=com objectClass: dcObject objectClass: organization o: Example dc: example # The organizational unit development (devel) dn: ou=devel,dc=example,dc=com objectClass: organizationalUnit ou: devel # The organizational unit documentation (doc) dn: ou=doc,dc=example,dc=com objectClass: organizationalUnit ou: doc # The organizational unit internal IT (it) dn: ou=it,dc=example,dc=com objectClass: organizationalUnit ou: it
![]() | LDIF 文件的编码 |
|---|---|
LDAP 采用 UTF-8 (Unicode) 编码。必须对元音变音符正确编码。请使用支持 UTF-8 的编辑器,如 Kate 或 Emacs 的最近版本。否则请避免使用元音变音符和其他特殊字符,或使用 recode 将输入内容重新编码为 UTF-8。 | |
以 .ldif 为后缀保存该文件,然后使用以下命令将其传递给服务器:
ldapadd -x -D <dn of the administrator> -W -f <file>.ldif
-x 在本例中用于关闭通过 SASL 身份验证。-D 用于声明调用操作的用户。在此输入管理员的有效 DN,就如同已经在 slapd.conf 中配置。在当前示例中为 cn=Administrator,dc=example,dc=com。-W 用于避免在命令行中输入密码(以明文形式),而改为激活单独的密码提示。此密码此前已在 slapd.conf 中通过 rootpw 确定。-f 用于传递文件名。请参见例 36.8 “example.ldif 中的 ldapadd”中关于运行 ldapadd 的详细信息。
例 36.8. example.ldif 中的 ldapadd
ldapadd -x -D cn=Administrator,dc=example,dc=com -W -f example.ldif Enter LDAP password: adding new entry "dc=example,dc=com" adding new entry "ou=devel,dc=example,dc=com" adding new entry "ou=doc,dc=example,dc=com" adding new entry "ou=it,dc=example,dc=com"
个人的用户数据可以储存在单独的 LDIF 文件中。例 36.9 “Tux 的 LDIF 数据” 向新的 LDAP 目录添加了 Tux。
例 36.9. Tux 的 LDIF 数据
# coworker Tux dn: cn=Tux Linux,ou=devel,dc=example,dc=com objectClass: inetOrgPerson cn: Tux Linux givenName: Tux sn: Linux mail: tux@example.com uid: tux telephoneNumber: +49 1234 567-8
LDIF 文件可以包含任意数目的对象。一次可以将整个目录分支都传递到服务器中,也可以仅传递部分目录,如单个对象的示例所示。如果需要对某些数据进行较为频繁的修改,建议对单个对象进行细分。
使用 ldapmodify 工具可以修改储存数据。最简单的方法是修改相应的 LDIF 文件,然后将这个修改过的文件传递给 LDAP 服务器。若要将同事 Tux 的电话号码从 +49 1234 567-8 改为 +49 1234 567-10,请像在 例 36.10 “修改过的 LDIF 文件 tux.ldif” 中那样编辑 LDIF 文件。
例 36.10. 修改过的 LDIF 文件 tux.ldif
# coworker Tux dn: cn=Tux Linux,ou=devel,dc=example,dc=com changetype: modify replace: telephoneNumber telephoneNumber: +49 1234 567-10
使用以下命令将修改过的文件导入 LDAP 目录:
ldapmodify -x -D cn=Administrator,dc=example,dc=com -W -f tux.ldif
或者,直接将要更改的属性传递给 ldapmodify。该过程如下所述:
启动 ldapmodify 并输入您的密码:
ldapmodify -x -D cn=Administrator,dc=example,dc=com -W Enter LDAP password:
输入更改,同时要小心地采用如下所示的语法顺序:
dn: cn=Tux Linux,ou=devel,dc=example,dc=com changetype: modify replace: telephoneNumber telephoneNumber: +49 1234 567-10
有关 ldapmodify 及其语法的详细信息,请参见 ldapmodify 手册中的语法。
OpenLDAP 提供 ldapsearch 命令行工具,用于搜索 LDAP 目录中的数据并从中读取数据。简单查询将采用以下语法:
ldapsearch -x -b dc=example,dc=com "(objectClass=*)"
选项 -b 用于确定搜索基础 - 要执行搜索的树的对应部分。在当前情况下为 dc=example,dc=com。要在 LDAP 目录的某个子部分中执行更为精确的搜索(例如仅在 devel 部门内搜索),请使用 -b 将此部分传递给 ldapsearch。-x 用于请求激活简单身份验证。(objectClass=*) 用于声明应该读取目录包含的所有对象。可以在创建新目录树后使用此命令选项,用来校验是否正确记录所有项并且服务器是否能按预期响应。有关 ldapsearch 用法的详细信息,请参见相应的手册页 (ldapsearch(1))。