yum install -y openldap openldap-clients openldap-servers
cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
(如果没有ldap ,可以自己建一个ldap账号及ldap组,我直接执行他就自动创建了ldap账号)
chown -R ldap:ldap /var/lib/ldap/DB_CONFIG
启动: systemctl start slapd
停止:systemctl stop slapd
查看: systemctl status slapd
slappasswd -s 123456
自己新建一个目录用于自己准备修改openldap配置的数据,例如:在/home/lc目录下执行如下
cat > change_root_pwd.ldif << EOF
dn: olcDatabase={0}config,cn=config
changetype: modify
add: olcRootPW
olcRootPW: {SSHA}+5nY9MxHU0NvxHVoRFBq4bPy5jJBuxmr
EOF
注:这里olcRootPW的值就是上面slappasswd -s 123456得到的结果
ldapadd -Y EXTERNAL -H ldapi:/// -f change_root_pwd.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/cosine.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/nis.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/inetorgperson.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/collective.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/corba.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/duaconf.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/dyngroup.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/java.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/misc.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/openldap.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/pmi.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/ppolicy.ldif
自己新建一个目录用于自己准备修改openldap配置的数据,例如:在/home/lc目录下执行如下
cat > init_root_dc.ldif <,dc=com
objectClass: top
objectClass: dcObject
objectClass: organization
o: sinux Company
dc: sinux
EOF
这里的dn: dc=sinux,dc=com一般是公司域名,可以自己随意设置,也就是初始登录的账号
执行导入: ldapadd -x -D cn=Manager,dc=pingan,dc=com -w 123456 -f init_root_dc.ldif
至此 安装启动设置初始化账号密码就完成了,可以使用ApacheDirectoryStudio 来连接openldap了
目录介绍:
数据目录:/var/lib/ldap
配置目录:/etc/openldap/slapd.d
la文件目录: /usr/lib64/openldap
schema 目录:/etc/openldap/schema
systemctl stop slapd
yum -y remove openldap-servers openldap-clients
rm -rf /var/lib/ldap
userdel ldap
groupdel ldap
cd /etc/openldap/
rm -rf check_password.conf ldap.conf schema slapd.d
注意:不要删除certs
至此:卸载就完成了
卸载后发现yum不可用,此时千万不要断开连接,否则连不上了,只能重装系统了
原因:liblber-2.4.so.2.10.7
、libldap-2.4.so.2.10.7
被删除了
解决办法:提前备份liblber-2.4.so.2.10.7 libldap-2.4.so.2.10.7文件(这两个文件位于/usr/lib64/目录下),并重新复制到/usr/lib64目录下
添加软连接:
ln -s /usr/lib64/libsasl2.so.3 /usr/lib64/libsasl2.so.2
ln -s /usr/lib64/liblber-2.4.so.2.10.7 /usr/lib64/liblber-2.4.so.2
ln -s /usr/lib64/libldap-2.4.so.2.10.7 /usr/lib64/liblber-2.4.so.2
原因: /etc/openldap目录下缺失验证文件 certs
解决办法:将certs文件放入/etc/openldap目录下(安装后/etc/openldap有此文件夹,可提前备份),重启
Please note the extracted key file will not be protected with a P……ssions
原因:是权限问题
解决办法:
chown -R ldap. /etc/openldap
chown -R ldap. /var/lib/ldap
自己新建一个目录用于自己准备修改openldap配置的数据,例如:在/home/lc目录下执行如下
cat > init_domain_and_admin.ldif << EOF
dn: olcDatabase={1}monitor,cn=config
changetype: modify
replace: olcAccess
olcAccess: {0}to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" read by dn.base="cn=Manager,dc=sinux,dc=com" read by * none
dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcSuffix
olcSuffix: dc=sinux,dc=com
dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcRootDN
olcRootDN: cn=Manager,dc=sinux,dc=com
dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcRootPW
olcRootPW: {SSHA}sJfMZ0uptc8Hmh5lLDsKVmnpOEDrdfOC
dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcAccess
olcAccess: {0}to attrs=userPassword,shadowLastChange by dn="cn=Manager,dc=sinux,dc=com" write by anonymous auth by self write by * none
olcAccess: {1}to dn.base="" by * read
olcAccess: {2}to * by dn="cn=Manager,dc=sinux,dc=com" write by * read
EOF
注:olcRootPW是生成的密码,cn=Manager,dc=sinux,dc=com是管理员账号,dc=sinux是自己随意设置,一般设为公司域名
执行命令,修改配置:ldapadd -Q -Y EXTERNAL -H ldapi:/// -f init_domain_and_admin.ldif
查询系统日志:
slapd -d ?
查看系统日志级别
cat /etc/openldap/slapd.d/cn\=config.ldif |grep -i log
创建目录
mkdir -p /var/log/slapd
touch /var/log/slapd/slapd.log
chmod 755 /var/log/slapd
chown -R ldap:ldap /var/log/slapd
echo "local4.* /var/log/slapd/slapd.log" >> /etc/rsyslog.conf
systemctl restart rsyslog
设置日志级别
在/home/lc目录下执行如下
cat > set_log_level.ldif<
执行:ldapmodify -Y EXTERNAL -H ldapi:/// -f set_log_level.ldif
查看系统日志
tailf /var/log/slapd/slapd.log
mkdir -p /var/log/slapd
touch /var/log/slapd/audit.log
chmod 755 /var/log/slapd
chown -R ldap:ldap /var/log/slapd
在/home/lc目录下执行如下
cat >add_auditlog.ldif<{0},cn=config
changetype: modify
add: olcModuleLoad
olcModuleLoad: {3}auditlog
dn: olcOverlay=auditlog,olcDatabase={2}hdb,cn=config
changetype: add
objectClass: olcOverlayConfig
objectClass: olcAuditLogConfig
olcAuditlogFile: /var/log/slapd/auditlog.log
EOF
执行: ldapadd -Q -Y EXTERNAL -H ldapi:/// -f add_auditlog.ldif
查看日志:
tailf /var/log/slapd/audit.log
自己新建一个目录用于自己准备修改openldap配置的数据,例如:在/home/lc目录下执行如下
cat > rpuser.ldif <,dc=sinux,dc=com
objectClass: simpleSecurityObject
objectClass: account
uid: repl
description: Replication User
userPassword: 123456
EOF
导入:ldapadd -x -w 123456 -D "cn=Manager,dc=sinux,dc=com" -f rpuser.ldif
注意:这里用的是自己上面设置的账号密码
继续在/home/lc目录下执行如下
cat > syncprov_mod.ldif<,cn=config
objectClass: olcModuleList
cn: module
olcModulePath: /usr/lib64/openldap
olcModuleLoad: syncprov.la
EOF
执行导入:ldapadd -Y EXTERNAL -H ldapi:/// -f syncprov_mod.ldif
继续在/home/lc目录下执行如下
cat > syncprov.ldif<,olcDatabase={2}hdb,cn=config
objectClass: olcOverlayConfig
objectClass: olcSyncProvConfig
olcOverlay: syncprov
olcSpSessionLog: 100
EOF
执行导入:ldapadd -Y EXTERNAL -H ldapi:/// -f syncprov.ldif
继续在/home/lc目录下执行如下
cat > syncrepl.ldif<{2}hdb,cn=config
changetype: modify
add: olcSyncRepl
olcSyncRepl: rid=001
provider=ldap://192.168.10.128:389/
bindmethod=simple
binddn="uid=repl,dc=pingan,dc=com"
credentials=123456
searchbase="dc=pingan,dc=com"
scope=sub
schemachecking=off
type=refreshAndPersist
attrs="*,+"
retry="60 10 300 +"
interval=00:00:05:00
EOF
执行:ldapmodify -Y EXTERNAL -H ldapi:/// -f syncrepl.ldif
至此:主从配置就完成了
继续在/home/lc目录下执行如下:
vim ldaptest.ldif
dn: uid=ldaprptest,ou=People,dc=sinux,dc=com
objectClass: top
objectClass: account
objectClass: posixAccount
objectClass: shadowAccount
cn: ldaprptest
uid: ldaprptest
uidNumber: 9988
gidNumber: 100
homeDirectory: /home/ldaprptest
loginShell: /bin/bash
gecos: LDAP Replication Test User
userPassword: {crypt}x
shadowLastChange: 17058
shadowMin: 0
shadowMax: 99999
shadowWarning: 7
在Master导入
ldapadd -x -w 123456 -D "cn=Manager,dc=sinux,dc=com" -f ldaptest.ldif
在Master查看
ldapsearch -x cn=ldaprptest -b dc=sinux,dc=com
去SLAVE查询
ldapsearch -x cn=ldaprptest -b dc=sinux,dc=com
如果有数据则主从同步成功,当然也可以使用Apache Directory Studio在master新建数据去slave查询