服务器数据初始化

[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 = "
davy.org";
Default base
$DEFAULT_BASE = "dc=
davy,dc=org";


[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

建立davy.ldif,ou_people.ldif, ou_group.ldif三个文件
[root@mail migration]# cd /etc/openldap/
再次提醒,注意每行后面不要留有空格。
[root@mail openldap]# cat
davy.ldif
dn: dc=
davy,dc=org
dc: example
objectClass: dcObject
objectClass: organizationalUnit
ou:
davy.org
[root@mail openldap]# cat ou_people.ldif
dn: ou=people, dc=
davy, dc=org
objectclass: organizationalUnit
ou: people

[root@mail openldap]# cat ou_group.ldif
dn: ou=group, dc=
davy, dc=org
objectclass: organizationalUnit
ou: group

停止ldap服务
[root@mail openldap]# service ldap stop


转换原有Linux 账号至OpenLDAP服务器上:
[root@mail openldap]# slapadd -vl
davy.ldif
added: "dc=
davy,dc=org" (00000001)

[root@mail openldap]# slapadd -vl ou_people.ldif
added: "ou=people, dc=
davy,dc=org " (00000002)

[root@mail openldap]# slapadd -vl ou_group.ldif
added: "ou=group, dc=
davy,dc=org " (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@mail openldap]# service ldap start

以下命令可查询到刚才输入的信息。
查询:
ldapsearch -x -H ldap://192.168.1.209 -b  'dc=
davy,dc=org'
# extended LDIF
#
# LDAPv3
# base <dc=
davy,dc=org> with scope subtree
# filter: (objectclass=*)
# requesting: ALL
#

# search result
search: 2
result: 32 No such object

# numResponses: 1

# ldapsearch-x -b 'dc=it,dc=org'

-b
设置目录起点,如果设置了BASE参数,该项可不用。
如果按以上配置文件设置了acl,用上面的查询命令是查询不到受保护的内容的。如上面的
userPassword and mail
。要查询到这些受限内容,需要通过验证才可以。

# ldapsearch -x -LLL -h it.com -b 'dc=it,dc=
org' -D 'uid=qq,dc=it,dc=org' -W 'uid=qq'

出现不显示任何条目————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=
davy,dc=org" 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=
davy,dc=org
 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=
org'

-b
设置目录起点,如果设置了BASE参数,该项可不用。
如果按以上配置文件设置了acl,用上面的查询命令是查询不到受保护的内容的。如上面的
userPassword and mail
。要查询到这些受限内容,需要通过验证才可以。

# ldapsearch -x -LLL -h it.
org -b 'dc=it,dc=org' -D 'uid=qq,dc=it,dc=org' -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
#


接着提示输入密码。输入userPassword的密码回车,所有信息就都出来了。

[root@mail openldap]# ldapsearch -x -b '' -s base'(objectclass=*)' namingContexts;
# extended LDIF
#
# LDAPv3
# base <> with scope baseObject
# filter: (objectclass=*)
# requesting: namingContexts
#

#
dn:
namingContexts: dc=
davy,dc=org

# search result
search: 2
result: 0 Success

# numResponses: 2
# numEntries: 1


3
)安装openLDAP GUI管理客户端
3.1)phpLDAPadmin
的安装和配置
下载最新版本的phpLDAPadmin
http://phpldapadmin.sourceforge.net/

[root@mail openldap]# tar -zvxfphpldapadmin-1.1.0-alpha4.tar.gz
[root@mail openldap]# chown -R apache.apache phpldapadmin-1.1.0-alpha4
[root@mail openldap]# cd phpldapadmin-1.1.0-alpha4/config/
[root@mail config]# cp config.php.example config.php
[root@mail config]# vi config.php
// $config->custom->appearance['language'] = 'auto';
$config->custom->appearance['language'] = 'zh_CN';


3.2)lam (LDAP Account Manager)的安装和配置
http://lam.sourceforge.net/
ldap-account-manager-2.0.0.tar.gz


客户端的配置
在客户端执行authconfig-tui命令,进入认证配置界面


4
openLDAP主从复***务器配置
MasterLDAP: 10.10.119.200
SlaveLDAP: 10.10.119.204
Port:  389

MasterLDAP端修改openLDAP主配置文件/etc/openldap/slapd.conf
[root@mail openldap]# vi /etc/openldap/slapd.conf
replogfile /var/lib/ldap/openldap-master-replog
replica host=10.10.119.204:389
       suffix="dc=
davy,dc=org"
       binddn="cn=
root,dc=davy,dc=org"
       bindmethod=simple
       credentials=123456


SlaveLDAP端修改openLDAP主配置文件/etc/openldap/slapd.conf
[root@mail openldap]# vi /etc/openldap/slapd.conf
updatedn        "cn=
root,dc=davy,dc=org"
updateref      
ldap://10.10.119.200:389

5openLDAP双向复***务器配置
MasterLDAP: 10.10.119.200
SlaveLDAP: 10.10.119.204
Port:  389

MasterLDAP端修改openLDAP主配置文件/etc/openldap/slapd.conf
[root@mail openldap]# vi /etc/openldap/slapd.conf
updatedn        "cn=
root,dc=davy,dc=org"
updateref      
ldap://10.10.119.204:389


SlaveLDAP端修改openLDAP主配置文件/etc/openldap/slapd.conf
[root@mail openldap]# vi /etc/openldap/slapd.conf
replica host=10.10.119.200:389
       suffix="dc=
davy,dc=org"
       binddn="cn=
root,dc=davy,dc=org"
       bindmethod=simple
       credentials=123456


Notes:
我的实现方法应该不是正宗的,是在主从配置的想法上得来的,在网上和openLDAP的官方手册中都没有看到openLDAP双向复***务器配置的案例,理论上这样配置的ldap服务起会发生死循环的问题,还好openLDAP10.10.119.200:389.rej文件和 10.10.119.204:389.rej文件记录了这种循环,而不会导致真正的死循环

6FAQ
Q1
启动服务时出现/var/lib/ldap/**.dbd owner is not ldap

[root@mail html]# chown -R  ldap.ldap /var/lib/ldap


Q2
启动服务时出现bdb_db_open: Warning - No DB_CONFIGfile found in directory  /var/lib/ldap
Oct 19 10:19:34 ldap slapd[55696]: bdb_db_open: Warning - No DB_CONFIG filefound in directory  /var/lib/ldap: (2)
Expect poor performance for suffix dc=
root,dc=davy,dc=org.

[root@mail html]# cp/etc/openldap/DB_CONFIG.davy /var/lib/ldap/DB_CONFIG


Q3
在做ldapwhoami或者ldapsearch是出现sasl绑定错误
ldap_sasl_interactive_bind_s: Invalid credentials (49)
additional info: SASL(-13): user not found: no secret in database


默认的openLDAP是基于 sasl 的绑定,需要先创建sasl用户及其密码
[root@mail html]# saslpasswd2 -c UserName
输入两次密码,密码保存在/etc/sasldb2,可以用 sasldblistusers2 命令查看用户名称
ldapsearch等命令中使用 -U UserName -W参数,然后输入上面的密码就行