二~服务器数据初始化
2)配置/etc/openldap/slapd.conf
备份原始配置档 (Linux/Unix管理员都应该养成这样的好习惯)
[root@mail openldap]# cp /etc/openldap/slapd.conf /etc/openldap/slapd.conf-orig
配置openldap的主配置文件
[root@mail openldap]# vi /etc/openldap/slapd.conf
include /etc/openldap/schema/dyngroup.schema
include /etc/openldap/schema/java.schema
include /etc/openldap/schema/misc.schema
include /etc/openldap/schema/openldap.schema
include /etc/openldap/schema/ppolicy.schema
include /etc/openldap/schema/corba.schema
database bdb
suffix "dc=example,dc=com" #一条记录所属区域#
rootdn "cn=admin,dc=example,dc=com"
rootpw 1234567 #定义LDAP根管理员的密码(强烈建议使用加密的密码)
[root@station3 nks]# service ldap status
slapd (pid 5840) 正在运行...
[root@station3 nks]# service ldap stop
停止 slapd: [确定]
将系统账户转移到openldap中
[root@mail openldap]# vi /usr/share/openldap/migration/migrate_common.ph
$DEFAULT_MAIL_DOMAIN = "example.com";
Default base
$DEFAULT_BASE = "dc=example,dc=com";
[root@mail openldap]# cd /usr/share/openldap/migration/
[root@mail migration]# ./migrate_passwd.pl /etc/passwd > /etc/openldap/user.ldif
[root@mail migration]# ./migrate_group.pl /etc/group > /etc/openldap/group.ldif
建立example.ldif,ou_people.ldif, ou_group.ldif三个文件
[root@mail migration]# cd /etc/openldap/
再次提醒,注意每行后面不要留有空格。
[root@mail openldap]# cat example.ldif
dn: dc=example,dc=com
dc: example
objectClass: dcObject
objectClass: organizationalUnit
ou: example.com
[root@mail openldap]# cat ou_people.ldif
dn: ou=people, dc=example, dc=com
objectclass: organizationalUnit
ou: people
[root@mail openldap]# cat ou_group.ldif
dn: ou=group, dc=example, dc=com
objectclass: organizationalUnit
ou: group
停止ldap服务
[root@mail openldap]# service ldap stop
转换原有Linux 账号至OpenLDAP服务器上:
[root@mail openldap]# slapadd -vl example.ldif
added: "dc=example,dc=com" (00000001)
[root@mail openldap]# slapadd -vl ou_people.ldif
added: "ou=people,dc=example,dc=com" (00000002)
[root@mail openldap]# slapadd -vl ou_group.ldif
added: "ou=group,dc=example,dc=com" (00000043)
[root@mail openldap]# slapadd -vl user.ldif
[root@mail openldap]# slapadd -vl group.ldif
为了检查服务是否正在运行并且被正确配置,可以对服务器运行一个搜索命令,使用ldapsearch
ldapsearch -x -b '' -s base '(objectclass=*)' namingContexts;
注意命令行参数中单引号的使用,它们阻止特殊的字符被shell解析。这应该返回:
[root@station3 Server]# rpm -vih openldap-clients-2.3.43-3.el5.i386.rpm
Preparing... ########################################### [100%]
1:openldap-clients ########################################### [100%]
[root@station3 Server]# ldap
ldapadd ldapdelete ldapmodrdn ldapsearch
ldapcompare ldapmodify ldappasswd ldapwhoami
[root@mail openldap]# service ldap start
入以下命令可查询到刚才输入的信息。
查询:
ldapsearch -x -H ldap://192.168.1.209 -b 'dc=example,dc=com'
# extended LDIF
#
# LDAPv3
# base <dc=example,dc=com> with scope subtree
# filter: (objectclass=*)
# requesting: ALL
#
# search result
search: 2
result: 32 No such object
# numResponses: 1
# ldapsearch -x -b 'dc=it,dc=com'
-b设置目录起点,如果设置了BASE参数,该项可不用。
如果按以上配置文件设置了acl,用上面的查询命令是查询不到受保护的内容的。如上面的
userPassword and mail。要查询到这些受限内容,需要通过验证才可以。
# ldapsearch -x -LLL -h it.com -b 'dc=it,dc=com' -D 'uid=qq,dc=it,dc=com' -W 'uid=qq'
为了检查服务是否正在运行并且被正确配置,可以对服务器运行一个搜索命令,使用ldapsearch
ldapsearch -x -b '' -s base '(objectclass=*)' namingContexts;
注意命令行参数中单引号的使用,它们阻止特殊的字符被shell解析。这应该返回:
[root@station3 Server]# rpm -vih openldap-clients-2.3.43-3.el5.i386.rpm
Preparing... ########################################### [100%]
1:openldap-clients ########################################### [100%]
[root@station3 Server]# ldap
ldapadd ldapdelete ldapmodrdn ldapsearch
ldapcompare ldapmodify ldappasswd ldapwhoami
[root@mail openldap]# service ldap start
入以下命令可查询到刚才输入的信息。
查询:
ldapsearch -x -H ldap://192.168.1.209 -b 'dc=example,dc=com'
或者
[root@vm ~]# ldapsearch -x
# extended LDIF
#
# LDAPv3
# base <dc=example,dc=com> with scope subtree
# filter: (objectclass=*)
# requesting: ALL
#
# search result
search: 2
result: 32 No such object
# numResponses: 1
出现不显示任何条目————ldap.conf没配
在debug调试模式下看到下面的信息
[root@station3 openldap]# service ldap stop
# /usr/sbin/slapd -d 256 -u ldap 进入调试模式
slapd starting
conn=0 fd=10 ACCEPT from IP=127.0.0.1:32769 (IP=0.0.0.0:389)
conn=0 op=0 BIND dn="" method=128
conn=0 op=0 RESULT tag=97 err=0 text=
conn=0 op=1 SRCH base="dc=example,dc=com" scope=2 deref=0 filter="(objectClass=*)"
conn=0 op=1 SEARCH RESULT tag=101 err=32 nentries=0 text=
conn=0 op=2 UNBIND
conn=0 fd=10 closed
slapd shutdown: waiting for 0 threads to terminate
slapd stopped.
赶紧去检查ldap.conf,发觉配置返回初始化的缺省配置了
[root@station3 openldap]# pwd
/etc/openldap
[root@vm openldap]# cat ldap.conf
#SIZELIMIT 12
#TIMELIMIT 15
#DEREF never
HOST 127.0.0.1
BASE dc=example,dc=com
TLS_CACERTDIR /etc/openldap/cacerts
解决:重新配ldap.conf,重起ldap server
# Ldapsearch –x -LLL
# ldapsearch -x -LLL "(uid=ldap)" uid loginShell
# ldapsearch -x -b 'dc=it,dc=com'
-b设置目录起点,如果设置了BASE参数,该项可不用。
如果按以上配置文件设置了acl,用上面的查询命令是查询不到受保护的内容的。如上面的
userPassword and mail。要查询到这些受限内容,需要通过验证才可以。
# ldapsearch -x -LLL -h it.com -b 'dc=it,dc=com' -D 'uid=qq,dc=it,dc=com' -W 'uid=qq'
接着提示输入密码。输入userPassword的密码回车,所有信息就都出来了。
[root@mail openldap]# ldapsearch -x -b '' -s base '(objectclass=*)' namingContexts;
# extended LDIF
#
# LDAPv3
# base <> with scope baseObject
# filter: (objectclass=*)
# requesting: namingContexts
#