第二种导入数据到ldap中的方法是手工导入,当然手工导入也分为两种,第一种是通过手工编辑ldif文件,然后使用ldapadd命令导入;第二种是直接使用ldapadd命令,在交互模式下进行数据录入。

第一种:通过手工编辑ldif文件导入数据

下面我手工编辑两个ldif文件:

[root@ldapsrv01 ~]# cat ou.ldif 

dn: ou=sudoers,ou=people,dc=contoso,dc=com

objectClass: organizationalUnit

ou: sudoers


dn: ou=superusers,ou=people,dc=contoso,dc=com

objectClass: organizationalUnit

ou: superusers


dn: ou=disabled,ou=people,dc=contoso,dc=com

objectClass: organizationalUnit

ou: disabled


[root@ldapsrv01 ~]# cat user.ldif 

dn: uid=test01,ou=sudoers,ou=People,dc=contoso,dc=com

uid: test01

cn: test01

objectClass: account

objectClass: posixAccount

userPassword: {crypt}$6$xVZ5hNeH$GzlC19E6Tiq/4Y3HmtCwRjjKVzvcI2IA.z.QPqhwHU.mSV1UT7uZiaVG8HelvbgZJsn3Z1te75C/DNZ.C0Ov50

loginShell: /bin/bash

uidNumber: 10006

gidNumber: 10006

homeDirectory: /home/test01



dn: uid=test02,ou=superusers,ou=People,dc=contoso,dc=com

uid: test02

cn: test02

objectClass: account

objectClass: posixAccount

userPassword: {crypt}$6$xVZ5hNeH$GzlC19E6Tiq/4Y3HmtCwRjjKVzvcI2IA.z.QPqhwHU.mSV1UT7uZiaVG8HelvbgZJsn3Z1te75C/DNZ.C0Ov50

loginShell: /bin/bash

uidNumber: 10007

gidNumber: 10007

homeDirectory: /home/test02



dn: uid=test03,ou=disabled,ou=People,dc=contoso,dc=com

uid: test03

cn: test03

objectClass: account

objectClass: posixAccount

userPassword: {crypt}$6$xVZ5hNeH$GzlC19E6Tiq/4Y3HmtCwRjjKVzvcI2IA.z.QPqhwHU.mSV1UT7uZiaVG8HelvbgZJsn3Z1te75C/DNZ.C0Ov50

loginShell: /bin/bash

uidNumber: 10008

gidNumber: 10008

homeDirectory: /home/test03


然后使用ldapadd进行导入:

[root@ldapsrv01 ~]# ldapadd -x -D "cn=admin,dc=contoso,dc=com" -W -f ou.ldif

Enter LDAP Password: 

adding new entry "ou=sudoers,ou=people,dc=contoso,dc=com"


adding new entry "ou=superusers,ou=people,dc=contoso,dc=com"


adding new entry "ou=disabled,ou=people,dc=contoso,dc=com"


[root@ldapsrv01 ~]# ldapadd -x -D "cn=admin,dc=contoso,dc=com" -W -f user.ldif 

Enter LDAP Password: 

adding new entry "uid=test01,ou=sudoers,ou=People,dc=contoso,dc=com"


adding new entry "uid=test02,ou=superusers,ou=People,dc=contoso,dc=com"


adding new entry "uid=test03,ou=disabled,ou=People,dc=contoso,dc=com"


第二种:在ldapadd命令的交互模式下手工录入

输入ldapadd -x -D "cn=admin,dc=contoso,dc=com" -W命令,回车之后输入admin的密码,然后就进入交互模式,此时就可以输入要录入的ldap信息了,录入完成后按Ctrl+d键存盘退出交互模式,如果信息录入无误就会成功导入。

这里面最容易出错的地方是对象类和属性的对应关系出错,对象类和属性是在schema文档中定义的。它们之间的关系是这样的,对象类中有些属性是必选的,有些属性是可选的。录入信息的属性必须在对象类中有定义才能用。同时,也需要注意每一行后面一定不能有空格,不然会报错。

[root@ldapsrv01 ~]# ldapadd -x -D "cn=admin,dc=contoso,dc=com" -W

Enter LDAP Password: 

dn: uid=developer,ou=sudoers,ou=people,dc=contoso,dc=com

uid: developer

cn: developer

objectClass: account

objectClass: posixAccount

userPassword: 123456

loginShell: /bin/bash

uidNumber: 10010 

gidNumber: 10010

homeDirectory: /home/developeradding new entry "uid=developer,ou=sudoers,ou=people,dc=contoso,dc=com"

录入成功之后,我对新添加的developer进行一个检索:

[root@ldapsrv01 ~]# ldapsearch -LLL -x -D "cn=admin,dc=contoso,dc=com" -W -b "dc=contoso,dc=com" '(uid=developer)'

Enter LDAP Password: 

dn: uid=developer,ou=sudoers,ou=People,dc=contoso,dc=com

uid: developer

cn: developer

objectClass: account

objectClass: posixAccount

userPassword:: MTIzNDU2

loginShell: /bin/bash

uidNumber: 10010

gidNumber: 10010

homeDirectory: /home/developer

OK,成功搜索到刚刚添加的developer用户,说明手工录入成功。

鉴于手工录入容易出错,而且对象类和属性的关系容易记错,所以一般都不适用手工录入的方法,而手工生成ldif文件进行导入的方法不错,可以通过对比原有的数据进行ldif文件的编写,也避免在ldapadd命令交换模式下容易多空格、编辑困难等问题,所以建议使用第一种方式,当然,这只是在这两种方式之间的选择,下一篇将介绍使用ldap客户端进行数据管理,也是一个可选的方案。