B.5. 使用 LDIF 定义目录
整个目录的内容可以使用 LDIF 来定义。当有很多条目添加到目录中时,使用 LDIF 是一个高效的目录创建方法。
使用 LDIF 创建目录:
- 创建包含以 LDIF 格式添加的条目的 ASCII 文件。确保每个条目都通过空行与下一个条目分开。在条目之间仅使用一行,并确保文件的第一行不为空,否则 ldapmodify 实用程序将退出。如需更多信息,请参阅 第 B.4 节 “使用 LDIF 指定目录条目”。
- 使用数据库中的最顶层或 root 条目开始每个文件。根条目必须代表数据库中包含的后缀或子修复。例如,如果数据库具有后缀 dc=example,dc=com,则目录中的第一个条目必须是 dn: dc=example,dc=com。有关后缀的详情,请查看 红帽目录服务器配置、命令和文件参考 中描述的"Suffix"参数。
- 确保一个条目代表 LDIF 文件中的分支点,然后再放置在该分支下创建的条目。例如,要将条目放在人员和组子树中,请在在这些子树中创建条目前为这些子树创建分支点。注意LDIF 文件按顺序读取,因此必须在子条目前列出父条目。
- 使用以下方法之一从 LDIF 文件创建目录:
- 通过 Web 控制台初始化数据库。如果存在一个小的数据库要导入(小于 10,000 条目),则使用此方法。请参阅 第 6.1.3 节 “使用 Web 控制台导入数据”。警告这个方法是破坏性的,将擦除后缀中的任何现有数据。
- ldif2db 或 ldif2db.pl 命令行工具。如果存在要导入的大型数据库(超过 10,000 个条目),则使用此方法。请参阅 第 6.1.2.2 节 “导入服务器为 Offline 的数据”。
- 如果服务器正在运行,则无法使用 ldif2db。
- ldif2db.pl 只能在服务器运行时使用。
警告这个方法是破坏性的,将擦除后缀中的任何现有数据。 - 带有 -a 参数的 ldapmodify 命令行工具。如果新子树添加到现有数据库,或者后缀中存在不应删除的数据,则使用此方法。与从 LDIF 文件创建目录的其他方法不同,必须在使用 ldapmodify 添加子树前运行目录服务器。请参阅 第 3.1.3 节 “添加条目”。
例 B.1. LDIF 文件示例
此 LDIF 文件包含一个域、两个机构单元和三个机构人员条目:
dn: dc=example,dc=com objectclass: top objectclass: domain dc: example description: Fictional example domain dn: ou=People,dc=example,dc=com objectclass: top objectclass: organizationalUnit ou: People description: Fictional example organizational unit tel: 555-5559 dn: cn=June Rossi,ou=People,dc=example,dc=com objectClass: top objectClass: person objectClass: organizationalPerson objectClass: inetOrgPerson cn: June Rossi sn: Rossi givenName: June mail: rossi@example.com userPassword: {sha}KDIE3AL9DK ou: Accounting ou: people telephoneNumber: 2616 roomNumber: 220 dn: cn=Marc Chambers,ou=People,dc=example,dc=com objectClass: top objectClass: person objectClass: organizationalPerson objectClass: inetOrgPerson cn: Marc Chambers sn: Chambers givenname: Marc mail: chambers@example.com userPassword: {sha}jdl2alem87dlacz1 telephoneNumber: 2652 ou: Manufacturing ou: People roomNumber: 167 dn: cn=Robert Wong,ou=People,example.com Corp,dc=example,dc=com objectClass: top objectClass: person objectClass: organizationalPerson objectClass: inetOrgPerson cn: Robert Wong cn: Bob Wong sn: Wong givenname: Robert givenname: Bob mail: bwong@example.com userPassword: {sha}nn2msx761 telephoneNumber: 2881 roomNumber: 211 ou: Manufacturing ou: people dn: ou=Groups,dc=example,dc=com objectclass: top objectclass: organizationalUnit ou: groups description: Fictional example organizational unit