第二种导入数据到ldap中的方法是手工导入,当然手工导入也分为两种,第一种是通过手工编辑ldif文件,然后使用ldapadd命令导入;第二种是直接使用ldapadd命令,在交互模式下进行数据录入。
第一种:通过手工编辑ldif文件导入数据
下面我手工编辑两个ldif文件:
[[email protected] ~]# 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
[[email protected] ~]# 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进行导入:
[[email protected] ~]# 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"
[[email protected] ~]# 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文档中定义的。它们之间的关系是这样的,对象类中有些属性是必选的,有些属性是可选的。录入信息的属性必须在对象类中有定义才能用。同时,也需要注意每一行后面一定不能有空格,不然会报错。
[[email protected] ~]# 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进行一个检索:
[[email protected] ~]# 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客户端进行数据管理,也是一个可选的方案。