原ldap服務(wù)器使用slapd.conf文件配置匿沛,新ldap服務(wù)使用docker安裝openldap,新的ldap不建議使用slapd.conf文件配置信认。
OpenLDAP 2.3及更高版本已轉(zhuǎn)為使用動(dòng)態(tài)運(yùn)行時(shí)配置引擎slapd-config
允許所有slapd的配置選項(xiàng)在運(yùn)行中進(jìn)行更改,無(wú)需重新啟動(dòng)服務(wù)器即可使更改生效叼风。
目前版本仍然支持較舊的slapd.conf文件么夫,但已不推薦使用,并且將會(huì)在新的OpenLDAP版本中不在支持兴垦。
雖然slapd-config的配置系統(tǒng)以文本文件形式保存在硬盤里(通常是在/usr/local/etc/openldap/slapd.d下)徙赢,但應(yīng)該永遠(yuǎn)不會(huì)直接編輯任何LDIF文件字柠。
配置更改應(yīng)通過(guò)LDAP操作執(zhí)行,例如ldapadd狡赐,ldapdelete或ldapmodify命令執(zhí)行自己寫好的ldif文件
1. 使用docker pull openldap
docker pull osixia/openldap
2.創(chuàng)建幾個(gè)目錄
/mnt/sdb1/ldap/data/
/mnt/sdb1/ldap/conf/slapd.d
/mnt/sdb1/ldap/conffile
data目錄保存數(shù)據(jù)
slapd.d目錄保存配置
conffile目錄用來(lái)與容器交換文件
3. 運(yùn)行容器
docker run --restart=always \
-v /mnt/sdb1/ldap/data/:/var/lib/ldap \
-v /mnt/sdb1/ldap/conf/slapd.d:/etc/ldap/slapd.d \
-v /mnt/sdb1/ldap/conffile/:/home/ldap/conffile \
-p 389:389 -p 636:636 \
--name openldap -d osixia/openldap --loglevel debug
4. 生成密碼
docker exec -it openldap slappasswd
New password:
Re-enter new password:
{SSHA}ZbbjXA1zx3Mng6UL/1FCBusX49bRT6vJ
輸入兩次密碼會(huì)生成加密后的密碼
記下最后一行生成的加密串
5. 修改管理員密碼
在/mnt/sdb1/ldap/conffile下創(chuàng)建一個(gè)文件chrootpw.ldif
dn: olcDatabase={0}config,cn=config
changetype: modify
replace:olcRootPW
olcRootPW: {SSHA}ZbbjXA1zx3Mng6UL/1FCBusX49bRT6vJ
最后一行為剛才生成的加密串
執(zhí)行編輯好的 chrootpw.ldif 文件
docker exec -it openldap ldapadd -Y EXTERNAL -H ldapi:/// -f /home/ldap/conffile/chrootpw.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
modifying entry "olcDatabase={0}config,cn=config"
最后一行表示修改成功
6. 添加基礎(chǔ)的 Schema
例如添加corba
docker exec -it openldap ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/corba.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
adding new entry "cn=corba,cn=schema,cn=config"
基礎(chǔ)的Schema在容器目錄/etc/ldap/schema/下窑业,
根據(jù)需要添加,重復(fù)添加可能會(huì)報(bào)錯(cuò)
7. 在 LDAP 數(shù)據(jù)庫(kù)中設(shè)置根域和數(shù)據(jù)庫(kù)超級(jí)管理員
在/mnt/sdb1/ldap/conffile下創(chuàng)建一個(gè)文件domain-dbadmin.ldif
dn: olcDatabase={1}mdb,cn=config
changetype: modify
replace: olcSuffix
olcSuffix: dc=***,dc=net
dn: olcDatabase={1}mdb,cn=config
changetype: modify
replace: olcRootDN
olcRootDN: cn=Manager,dc=***,dc=net
dn: olcDatabase={1}mdb,cn=config
changetype: modify
add: olcRootPW
olcRootPW: {SSHA}ZbbjXA1zx3Mng6UL/1FCBusX49bRT6vJ
dn: olcDatabase={1}mdb,cn=config
changetype: modify
add: olcAccess
dn: olcDatabase={1}mdb,cn=config
changetype: modify
replace: olcAccess
olcAccess: to *
by self read
by users none
by dn.base="cn=Manager,dc=shsbnu,dc=net" write
by anonymous auth
olcRootDN是管理員
olcRootPW是管理員密碼枕屉,也需要添入加密串常柄,可以相同或重新生成
olcRootDN 和 olcSuffix 需要修改成相應(yīng)的域地址
olcAccess 格式保持一致,最好不要使用tab
執(zhí)行該 ldif 文件
docker exec -it openldap ldapmodify -Y EXTERNAL -H ldapi:/// -f /home/ldap/conffile/domain-dbadmin.ldif
8. 數(shù)據(jù)恢復(fù)
原數(shù)據(jù)導(dǎo)出
slapcat > /opt/ldap/ldapdbak.ldif
將導(dǎo)出后的數(shù)據(jù)復(fù)制到容器所在服務(wù)器的/mnt/sdb1/ldap/conffile目錄下
數(shù)據(jù)導(dǎo)入
docker exec -it openldap slapadd -l /home/ldap/conffile/ldapdbak.ldif