網(wǎng)上OpenLDAP的安裝教程基本上都是停留在零幾年的,要么抄來(lái)抄去,它們會(huì)告訴你要去修改一個(gè)叫做slapd.conf的文件,基本上看到這里,你就不用往下看了,根本就沒(méi)有這個(gè)文件?。?!取而代之的是slapd.d的文件夾,然后另一部分教程會(huì)告訴你,讓你修改這個(gè)文件夾下的某一個(gè)ldif文件,看到這里,你也不用往下看了,你又看到了偽教程,因?yàn)檫@個(gè)文件夾下的所有文件的第一行都明確地寫(xiě)著:這是一個(gè)自動(dòng)生成的文件,不要修改它!你修改了它之后,它的md5校驗(yàn)值會(huì)匹配不上,造成更多的問(wèn)題。你應(yīng)該用ldapmodify來(lái)修改這個(gè)文件,而關(guān)于ldapmodify的教程,可以說(shuō)幾乎就沒(méi)有!如果前面安裝一切都順利,遇到各種問(wèn)題也沒(méi)有具體的解決辦法,這里我就把我安裝及遇到的問(wèn)題詳細(xì)的寫(xiě)一下吧。
先確保沒(méi)有安裝過(guò)openLdap,或者安裝失敗又或者改亂后,通常卸載步驟:
systemctl stop slapd
yum remove compat-openldap openldap-clients openldap-servers
rm -rf /var/lib/ldap/*
rm -rf /etc/openldap/slapd.d/*
安裝前系統(tǒng)設(shè)置,我也不知道為什么反正大多教程踩過(guò)坑的都這么做
1、防火墻設(shè)置
centos7.0默認(rèn)防火墻為firewalld
停止firewall
systemctl stop firewalld.service
禁止firewall開(kāi)機(jī)啟動(dòng)
systemctl disable firewalld.service
查看默認(rèn)防火墻狀態(tài):
firewall-cmd --state
2、修改selinux
vi /etc/selinux/config
將SELINUX=enforcing改為:SELINUX=disabled
setenforce 0 或者重啟,注意敲黑板重點(diǎn)。
一、安裝OpenLDAP
1、安裝
yum install -y openldap openldap-clients openldap-servers migrationtools
2、設(shè)置OpenLDAP管理密碼。
slappasswd
New password: 123456
Re-enter new password: 123456
{SSHA}r2fcL6Exxgr8oKkaWROUQDCZKqXrH7bE
3、修改根DN與添加密碼,上面說(shuō)過(guò)手動(dòng)改文件是不可取,但是我是這么走過(guò)來(lái)的沒(méi)問(wèn)題,畢竟ldapmodify相關(guān)操作少之又少且麻煩?。?!
vi /etc/openldap/slapd.d/cn=config/olcDatabase={2}hdb.ldif
修改內(nèi)容:
olcSuffix: dc=cpsino,dc=com
olcRootDN: cn=admin,dc=cpsino,dc=com
新增一行:
olcRootPW: {SSHA}r2fcL6Exxgr8oKkaWROUQDCZKqXrH7bE
注:.ldif文件內(nèi)容冒號(hào)后面都是有空格的,結(jié)尾無(wú)空格。
4、修改驗(yàn)證
vi /etc/openldap/slapd.d/cn=config/olcDatabase={1}monitor.ldif
olcAccess: {0}to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=extern
al,cn=auth" read by dn.base="cn=admin,dc=cpsino,dc=com" read by * none
5、配置DB數(shù)據(jù)庫(kù)
cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
chown ldap:ldap -R /var/lib/ldap
chmod 700 -R /var/lib/ldap
6、驗(yàn)證
slaptest -u
看見(jiàn):config file testing succeeded #驗(yàn)證成功,否則失敗。
7、授權(quán),若不授權(quán)啟動(dòng)時(shí)或報(bào)錯(cuò),權(quán)限不足
chown ldap:ldap -R /var/run/openldap
chown -R ldap:ldap /etc/openldap/
8、啟動(dòng)
systemctl start slapd //啟動(dòng) stop停止
systemctl enable slapd //開(kāi)機(jī)運(yùn)行
systemctl status slapd //查看運(yùn)行狀態(tài)及相關(guān)輸出日志

9、執(zhí)行l(wèi)dapsearch -x檢查是否有如下輸出
ldapsearch -x -b '' -s base'(objectclass=*)'

如顯示上面信息,表示服務(wù)已經(jīng)啟動(dòng)成功。
二、創(chuàng)建管理員賬號(hào)
1、手動(dòng)添加個(gè)ldif文件,劃重點(diǎn)!??!教程上但凡有這個(gè)objectClass: dcObject也可以不用看了,這個(gè)根本就不能往下添加uid!?。。。。。。。。。。。?!
vi base.ldif
dn: dc=cpsino,dc=com
dc: cpsino
objectClass: top
objectClass: domain
objectClass: domainRelatedObject
associatedDomain: cpsino.com
dn: cn=admin,dc=cpsino,dc=com
objectclass: organizationalRole
cn: admin
2、導(dǎo)入數(shù)據(jù)庫(kù)
ldapadd -x -D "cn=admin,dc=cpsino,dc=com" -W -f base.ldif
這里要求輸入管理員密碼,輸入密碼后就會(huì)看到日志 插入成功。
三、OpenLDAP管理工具(LDAPAdmin windows桌面版)個(gè)人覺(jué)得很好用,也寫(xiě)了個(gè)web服務(wù),用于公司添加員工賬號(hào)的一個(gè)統(tǒng)一的入口。



四 遇到過(guò)的問(wèn)題
1、ldap_bind: Invalid credentials (49)
這個(gè)問(wèn)題一般都是設(shè)置完管理員密碼之后,需要重啟一下openldap服務(wù),才會(huì)生效,或者你的用戶名和密碼輸入錯(cuò)誤。
2、ldap_add: Invalid syntax (21)
additional info: objectClass: value #0 invalid per syntax
這個(gè)問(wèn)題網(wǎng)上大多說(shuō)的是導(dǎo)入的語(yǔ)法有問(wèn)題,比如:后要有空格,每一個(gè)節(jié)點(diǎn)要有空行,結(jié)尾不能有空格。按照所述改完依舊有問(wèn)題,后來(lái)查資料
原來(lái)創(chuàng)建的初始節(jié)點(diǎn)的objectClass有問(wèn)題,網(wǎng)上教程上千篇一律的objectClass:dcObject,這個(gè)屬性他子節(jié)點(diǎn)根本add不進(jìn)去。
參考https://www.dazhuanlan.com/2019/10/24/5db0ea2223951/ objectClass的使用。
如果有問(wèn)題可以一起討論:qq277736477