美文网首页
centos下 docker方式安装openldap服务及原数据

centos下 docker方式安装openldap服务及原数据

作者: jerryloong | 来源:发表于2019-02-27 18:09 被阅读0次

    原ldap服务器使用slapd.conf文件配置,新ldap服务使用docker安装openldap,新的ldap不建议使用slapd.conf文件配置。

    OpenLDAP 2.3及更高版本已转为使用动态运行时配置引擎slapd-config
    允许所有slapd的配置选项在运行中进行更改,无需重新启动服务器即可使更改生效。
    目前版本仍然支持较旧的slapd.conf文件,但已不推荐使用,并且将会在新的OpenLDAP版本中不在支持。

    虽然slapd-config的配置系统以文本文件形式保存在硬盘里(通常是在/usr/local/etc/openldap/slapd.d下),但应该永远不会直接编辑任何LDIF文件。
    配置更改应通过LDAP操作执行,例如ldapadd,ldapdelete或ldapmodify命令执行自己写好的ldif文件

    1. 使用docker pull openldap
    docker pull osixia/openldap
    
    2.创建几个目录

    /mnt/sdb1/ldap/data/
    /mnt/sdb1/ldap/conf/slapd.d
    /mnt/sdb1/ldap/conffile
    data目录保存数据
    slapd.d目录保存配置
    conffile目录用来与容器交换文件

    3. 运行容器
     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
    

    输入两次密码会生成加密后的密码
    记下最后一行生成的加密串

    5. 修改管理员密码

    在/mnt/sdb1/ldap/conffile下创建一个文件chrootpw.ldif

    dn: olcDatabase={0}config,cn=config
    changetype: modify
    replace:olcRootPW
    olcRootPW: {SSHA}ZbbjXA1zx3Mng6UL/1FCBusX49bRT6vJ
    

    最后一行为刚才生成的加密串
    执行编辑好的 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. 添加基础的 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"
    

    基础的Schema在容器目录/etc/ldap/schema/下,
    根据需要添加,重复添加可能会报错

    7. 在 LDAP 数据库中设置根域和数据库超级管理员

    在/mnt/sdb1/ldap/conffile下创建一个文件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 需要修改成相应的域地址
    olcAccess 格式保持一致,最好不要使用tab
    执行该 ldif 文件

    docker exec -it openldap ldapmodify -Y EXTERNAL -H ldapi:/// -f /home/ldap/conffile/domain-dbadmin.ldif
    
    8. 数据恢复

    原数据导出

    slapcat > /opt/ldap/ldapdbak.ldif
    

    将导出后的数据复制到容器所在服务器的/mnt/sdb1/ldap/conffile目录下
    数据导入

    docker exec -it openldap slapadd -l /home/ldap/conffile/ldapdbak.ldif
    

    参考

    OpenLDAP 在 CentOS 7 上的极速搭建教程
    osixia / docker -openldap

    相关文章

      网友评论

          本文标题:centos下 docker方式安装openldap服务及原数据

          本文链接:https://www.haomeiwen.com/subject/srbfuqtx.html