标签(空格分隔): LDAPhtml
从OpenLDAP2.4.23版本开始全部配置数据都保存在slapd.d目录下的cn=config文件夹中,再也不使用slapd.conf做为配置文件数据库
有两种配置方式,一种是经过修改旧版配置文件slapd.conf,再用slaptest -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d/导入到数据库中,这种方式很是麻烦,不建议使用。
一种是经过编辑ldif文件,再用ldapadd命令导入到数据库中,这种方式是动态配置,不须要从新启动服务端slapd进程。vim
本文采用第二种方式,这种方式网上文档比较少,很差弄,本人花了10几天才算搞了个半懂,在这记录下来,但愿能给有须要的人一些帮助centos
若是非要使用第一种方法,centos7系统yum安装后没有slapd.conf.obsolete文件,能够选择从centos6上复制过来
官方文档: https://www.openldap.org/doc/admin24/slapdconf2.html
安装环境api
centos 7.5 ldap主1服务器:VECS05855 10.111.30.24 ldap主2服务器:VECS05856 10.111.30.25 OpenLDAP2.4.44 root帐号下执行全部命令
yum install -y openldap openldap-servers openldap-clients compat-openldap
备注(仅仅说明,不须要执行):服务器
#能够经过rpm -ql <package name>,来查看每一个安装包都有哪些文件 openldap: #OpenLDAP配置文件、库和文档 openldap-servers: #服务器进程及相关命令、迁移脚本和相关文件 openldap-clients: #客户端进程及相关命令,用来访问和修改 OpenLDAP 目录 compat-openldap: #与主从配置相关
安装过程当中会自动建立ldap用户和ldap组(确认安装完毕)数据结构
root@VECS05855:~# grep ldap /etc/passwd ldap:x:55:55:OpenLDAP server:/var/lib/ldap:/sbin/nologin root@VECS05855:~# grep ldap /etc/group ldap:x:55: root@VECS05855:~#
cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG chown ldap. /var/lib/ldap/DB_CONFIG
systemctl enable slapd && systemctl start slapd && systemctl status slapd
验证已经启动app
root@VECS05855:~# netstat -tunlp |grep slapd tcp 0 0 0.0.0.0:389 0.0.0.0:* LISTEN 19473/slapd tcp6 0 0 :::389 :::* LISTEN 19473/slapd
这一步生成管理员密码,注意两台机器的上明文密码同样,密文密码不同。dom
root@VECS05855:~# slappasswd New password: Re-enter new password: {SSHA}csl6iL5aVUWP1+UUnN/FhTkUKilET2+J
编写 LDIF(一种LDAP 专用的数据交换格式)文件,并经过ldapadd命令将管理员密码导入到 LDAP配置文件中。tcp
root@VECS05855:~# vim chrootpw.ldif dn: olcDatabase={0}config,cn=config changetype: modify add: olcRootPW olcRootPW: {SSHA}csl6iL5aVUWP1+UUnN/FhTkUKilET2+J
导入
root@VECS05855:~# ldapadd -Y EXTERNAL -H ldapi:/// -f 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"
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/cosine.ldif ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/inetorgperson.ldif ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/ppolicy.ldif ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/nis.ldif ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/dyngroup.ldif
root@VECS05855:~# vim chdomain.ldif 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=admin,dc=hellobike,dc=com" read by * none dn: olcDatabase={2}hdb,cn=config changetype: modify replace: olcSuffix olcSuffix: dc=hellobike,dc=com dn: olcDatabase={2}hdb,cn=config changetype: modify replace: olcRootDN olcRootDN: cn=admin,dc=hellobike,dc=com dn: olcDatabase={2}hdb,cn=config changetype: modify add: olcRootPW olcRootPW: {SSHA}csl6iL5aVUWP1+UUnN/FhTkUKilET2+J dn: olcDatabase={2}hdb,cn=config changetype: modify add: olcAccess olcAccess: {0}to attrs=userPassword,shadowLastChange by dn="cn=admin,dc=hellobike,dc=com" write by anonymous auth by self write by * none olcAccess: {1}to dn.base="" by * read olcAccess: {2}to * by dn="cn=admin,dc=hellobike,dc=com" write by * read
导入
root@VECS05855:~# ldapmodify -Y EXTERNAL -H ldapi:/// -f chdomain.ldif SASL/EXTERNAL authentication started SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth SASL SSF: 0 modifying entry "olcDatabase={1}monitor,cn=config" modifying entry "olcDatabase={2}hdb,cn=config" modifying entry "olcDatabase={2}hdb,cn=config" modifying entry "olcDatabase={2}hdb,cn=config" modifying entry "olcDatabase={2}hdb,cn=config"
root@VECS05855:~# vim basedomain.ldif dn: dc=hellobike,dc=com objectClass: top objectClass: dcObject objectClass: organization o: hellobike Company dc: hellobike dn: cn=admin,dc=hellobike,dc=com objectClass: organizationalRole cn: admin dn: ou=People,dc=hellobike,dc=com objectClass: organizationalUnit ou: People dn: ou=Group,dc=hellobike,dc=com objectClass: organizationalRole cn: Group
导入
[root@test1] ~$ ldapadd -x -D cn=admin,dc=hellobike,dc=com -W -f basedomain.ldif Enter LDAP Password: #输入上面设置的管理员密码(明文) adding new entry "dc=hellobike,dc=com" adding new entry "cn=admin,dc=hellobike,dc=com" adding new entry "ou=People,dc=hellobike,dc=com" adding new entry "ou=Group,dc=hellobike,dc=com"
经过以上的全部步骤,咱们就设置好了一个 LDAP 目录树:其中基准 dc=hellobike,dc=com 是该树的根节点,其下有一个管理域 cn=admin,dc=hellobike,dc=com 和两个组织单元 ou=People,dc=hellobike,dc=com 及 ou=Group,dc=hellobike,dc=com。
root@VECS05855:~# vim syncprov_mod.ldif dn: cn=module,cn=config objectClass: olcModuleList cn: module olcModulePath: /usr/lib64/openldap olcModuleLoad: syncprov.la
导入执行该文件
root@VECS05855:~# ldapadd -Y EXTERNAL -H ldapi:/// -f syncprov_mod.ldif SASL/EXTERNAL authentication started SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth SASL SSF: 0 adding new entry "cn=module,cn=config"
建立 configrep.ldif 文件。
configrep.ldif
root@VECS05855:~# vim configrep.ldif ### Update Server ID with LDAP URL ### dn: cn=config changetype: modify replace: olcServerID olcServerID: 1 ldap://VECS05855 olcServerID: 2 ldap://VECS05856 ### Enable replication ### dn: olcOverlay=syncprov,olcDatabase={2}hdb,cn=config changetype: add objectClass: olcOverlayConfig objectClass: olcSyncProvConfig olcOverlay: syncprov ### Adding details for replication ### dn: olcDatabase={2}hdb,cn=config changetype: modify add: olcSyncRepl olcSyncRepl: rid=001 provider=ldap://VECS05855 binddn="cn=admin,dc=hellobike,dc=com" bindmethod=simple credentials=Bi@#admin searchbase="dc=hellobike,dc=com" type=refreshAndPersist retry="5 5 300 5" timeout=1 olcSyncRepl: rid=002 provider=ldap://VECS05856 binddn="cn=admin,dc=hellobike,dc=com" bindmethod=simple credentials=Bi@#admin searchbase="dc=hellobike,dc=com" type=refreshAndPersist retry="5 5 300 5" timeout=1 - add: olcMirrorMode olcMirrorMode: TRUE
而后在两台服务器上分别执行这个 ldap_sync.ldif 文件便可。
ldapmodify -Y EXTERNAL -H ldapi:/// -f configrep.ldif
至此,dc=hellobike,dc=com 下的内容即可以在两个服务器上同步了。
参考:https://blog.csdn.net/fanren224/article/details/79707206 http://v.colinlee.fish/posts/openldap-speedy-tutorial-replication.html