zoukankan      html  css  js  c++  java
  • ldap服务器OpenLDAP安装使用

    OpenLDAP 是 LDAP 协议的一个开源实现。LDAP 服务器本质上是一个为只读访问而优化的非关系型数据库。它主要用做地址簿查询(如 email 客户端)或对各种服务访问做后台认证以及用户数据权限管控。(例如,访问 Samba 时,LDAP 可以起到域控制器的作用;或者 Linux 系统认证 时代替 /etc/passwd 的作用。)

    一、安装,环境:CentOS release 6.6 (Final)

    使用yum安装:yum -y install openldap compat-openldap openldap-clients openldap-servers openldap-servers-sql openldap-devel migrationtools

    软件包 软件包说明
    openldap 服务端和客户端必须用的库文件
    openldap-clients 在LDAP服务端使用,用户增删改查的命令行环境
    openldap-servers 用于启动服务和配置,包括单独的LDAP后台守护进程
    openldap-servers-sql 支持SQL模块
    compat-openldap openldap兼容性库环境

    查看安装情况:rpm -qa | grep openldap

    安装成功后会产生两类命令行:客户端命令、服务端命令;ldap开始的命令都是客户端命令,slapd开始的命令都是openldap服务器命令

    注意: 以 ldap 开头的命令(如: ldapsearch)是客户端工具,以 slap 开头的命令(如: slapcat slapcat)是服务端工具。

    查看OpenLDAP版本,使用如下命令:slapd -VV

    安装完会创建用户ldap和用户组ldap,这个用户是不能登录的/sbin/nologin。所以有关操作需要到root用户下执行,使用命令sudo su切换到root用户下

    二、配置OpenLDAP

    注意:从OpenLDAP2.4.23版本开始所有配置数据都保存在/etc/openldap/slapd.d/中,建议不再使用slapd.conf作为配置文件。 

    设置OpenLDAP的管理员密码,下图加密后的字段保存下,等会我们在配置文件中会使用到。

    slappasswd -s 123456

    修改olcDatabase={2}hdb.ldif文件:

    修改olcDatabase={2}hdb.ldif文件,对于该文件增加一行 olcRootPW: {SSHA}MFjmDOKFAVigfQ2Iok+GuVFUEZtE69ym,然后修改域信息:

    olcSuffix: dc=test,dc=com

    olcRootDN: cn=root,dc=test,dc=com

    注意:其中cn=root中的root表示OpenLDAP管理员的用户名,而olcRootPW表示OpenLDAP管理员加密后的密码,明文密码是test。

    实际修改如下:进入root账号进行修改

    vim /etc/openldap/slapd.d/cn=config/olcDatabase={2}hdb.ldif

    olcSuffix: dc=test,dc=com

    olcRootDN: cn=root,dc=test,dc=com

    olcRootPW: {SSHA}MFjmDOKFAVigfQ2Iok+GuVFUEZtE69ym

    修改olcDatabase={1}monitor.ldif文件

    修改olcDatabase={1}monitor.ldif文件,如下:

    vim /etc/openldap/slapd.d/cn=config/olcDatabase={1}monitor.ldif

    olcAccess: {0}to * by dn.base=”gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth” read by dn.base=”cn=root,dc=test,dc=com” read by * none

    注意:该修改中的dn.base是修改OpenLDAP的管理员的相关信息的。

    验证OpenLDAP的基本配置,使用如下命令,有些错误,可以不用管,因为提示信息config file testing succeeded表示基本配置是OK的

    slaptest -u

    配置OpenLDAP数据库

    OpenLDAP默认使用的数据库是BerkeleyDB,现在来开始配置OpenLDAP数据库,使用如下命令:

    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

    注意:/var/lib/ldap/就是BerkeleyDB数据库默认存储的路径。

    其他配置:

    复制配置文件模板,到系统配置目录下:
    cp -a /usr/share/openldap-servers/sldap.conf.obsolete /etc/openldap/slapd.conf

    删除旧的动态配置文件 
    rm -rf /etc/openldap/sladp.d/*

    复制数据库配置文件模板,到系统配置目录下 
    cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG

    修改数据库配置文件所在目录属主 
    chown -R ldap.ldap /var/lib/ldap

    生成加密密钥 
    虚拟机console执行命令:slappasswd
    提示New password:输入test
    提示Re-enter new password,输入test
    将生成的内容:{SSHA}SdorCU0SF/bBERBdPtkSVdWv94Hc826r,复制保存下来

    修改主配置文件,修改内容如下: 
    有关openldap的配置详解,参见博客《LDAP-openldap配置文件详解.md》

    database config
    access to *
        by dn.exact="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" manage
        by * none
    database monitor
    access to *
    by dn.exact="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" read
        by dn.exact="cn=root,dc=test,dc=com" read
        by * none
    database bdb
    suffix "dc=test,dc=com"
    checkpoint 1024 15
    rootdn "cn=root,dc=test,dc=com"
    rootpw {SSHA}SdorCU0SF/bBERBdPtkSVdWv94Hc826r

    修改相关目录属性 
    虚拟机console执行命令:chown -R ldap.ldap /etc/openldapchown -R ldap.ldap /var/lib/ldap

    删除旧的动态配置文件 
    虚拟机console执行命令:rm -rf /etc/openldap/slapd.d/*

    启动服务并设置开机启动 
    虚拟机console执行命令:service slapd start && chkconfilg slapd on ,此时若有报错可忽略。
    查看是否启动服务:service slapd statusnetstat -tupln|grep slapd

    动态配置文件 
    openldap的动态配置文件位于/etc/openldap/slapd.d/下,每次修改了主配置文件/etc/openldap/slapd.conf之后,都需要重新生成动态配置文件,即: 
    删除动态配置文件:rm -rf /etc/openldap/slapd.d/*
    重新生成动态配置文件:slaptest -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d
    修改动态配置目录属性:chown -R ldap.ldap /etc/openldap/slapd.d/

    修改配置文件/etc/openldap/ldap.conf 
    修改内容如下:

    BASE dc=test,dc=com
    URI ldap://ip   # 大网ip方便远程访问
    TLS_CACERTDIR /etc/openldap/certs
     

    三、启动服务:service slapd start | stop | status | restart

    如图可见,对于错误信息并不影响启动

    检查启动情况:默认端口是389

    使用命令:ldapsearch -x -LLL查看服务启动情况,如图所示,说明OK

    OpenLDAP默认使用的数据库是BerkeleyDB,yum安装的时候,自动完成了数据库的安装

    四、在ldap服务器里添加用户和用户组等

    首先手动编辑或使用工具migrationtools生成LDIF格式文件,注意文件格式,每个冒号后面都有一个空格,每行结尾不能有空格,多组信息直接使用行分割

     firstelement.ldif:

    dn: cn=root,dc=test,dc=com
    cn: user1
    sn: user1
    objectclass: person
    dn: cn=root,dc=test,dc=com
    cn: Manager
    sn: Manager
    objectclass: person
     
    
    ldapadd -D "cn=root,dc=test,dc=com" -W -f ~/firstelement.ldif

    如图,因为已经成功添加过,所以报已经存在的错误

    通过如下命令把ldif文件里的内容导入ldap服务器中

    ldapadd -x -D "cn=root,dc=test,dc=com' -c -W -f firstelement.ldif 
    ldapadd -x -D "cn=root,dc=test,dc=com" -c -W -f passwd.ldif 
    提示输入密码时,输入test,回车

     
    openldap默认使用的是BerkeleyDB数据库,yum安装的时候貌似已经自带安装,所以无需再安装

    五、使用客户端工具使用ldap服务:mac下使用ldap admin tool,免费版和收费版都会经常无故的死掉,杀死重启就好。而且发现这个工具在添加用户和用户组等的时候,会经常执行失败,这时候只能使用命令行导入ldif的方式添加用户等。

    ldapv3协议比较稳定,中文支持也比较好。但是不知道为什么,每次重启ldap admin tool后,又恢复到了ldapv2,搞得我每次都要设置一次

     密码:test

    参考:

    1、https://www.ilanni.com/?p=13775

    2、https://www.cnblogs.com/liwanliangblog/p/9193916.html

    3、https://wiki.archlinux.org/index.php/OpenLDAP_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)

    4、http://www.brennan.id.au/20-Shared_Address_Book_LDAP.html

    5、http://xstarcd.github.io/wiki/sysadmin/OpenLDAPconfig.html

    6、https://czmmiao.iteye.com/blog/1561703

  • 相关阅读:
    VC++对话框笔记
    STL中用erase()方法遍历删除元素
    VC++中不小心选错工程类型的解决办法
    directX中常用的数学计算
    VC++中string、char* 转换为LPCSTR
    判断空间上点是否在直线上
    vc6.0插件
    VC++常用定义(如SAFE_DELETE等)
    关于控件的AutoSize属性影响界面布局的问题解决
    C#判断日期是否正确(1900~今年,月份,天数)
  • 原文地址:https://www.cnblogs.com/shengulong/p/10182754.html
Copyright © 2011-2022 走看看