zoukankan      html  css  js  c++  java
  • CentOS 6.4安装配置ldap

    CentOS 6.5安装配置ldap

    时间:2015-07-14 00:54来源:blog.51cto.com 作者:“ly36843运维” 博客 举报 点击:274次

    一.安装ldap

    [root@dev ~]# yum install openldap openldap-* -y
    [root@dev ~]# yum install nscd nss-pam-ldapd nss-* pcre pcre-* -y

    二.配置ldap

    [root@dev ~]# cd /etc/openldap/
    [root@dev openldap]# ll
    total 16
    drwxr-xr-x. 2 root root 4096 Jul 13 20:10 certs
    -rw-r--r--. 1 root root  282 Jun 21 17:19 ldap.conf
    drwxr-xr-x  2 root root 4096 Jul 13 20:10 schema
    drwx------  3 ldap ldap 4096 Jul 13 20:10 slapd.d

    复制配置文件

    [root@dev openldap]# cp /usr/share/openldap-servers/slapd.conf.obsolete slapd.conf
    [root@dev openldap]# cp slapd.conf slapd.conf_`date +%Y%m%d`.bak

    设置ldap管理员密码

    [root@dev openldap]# slappasswd -s weyee
    {SSHA}4zVLzQItaa9wp00xF7oSynhPPNKfGyJ1
    [root@dev openldap]# slappasswd -s weyee |sed -e "s#{SSHA}#rootpw {SSHA}#g" >>/etc/openldap/slapd.conf    #设置密码是weyee
    [root@dev openldap]# tail -1 /etc/openldap/slapd.conf
    rootpw  {SSHA}6jZP4UfMlMfN0XKPch70R5+TiRCV+yT7

    修改dc配置

    [root@dev openldap]# vim /etc/openldap/slapd.conf
    #以下参数大概在114行
    database        bdb                                #使用bdb数据库
    suffix          "dc=dev,dc=com"                    #定义dc,指定搜索的域
    rootdn          "cn=admin,dc=dev,dc=com"           #定义管理员的dn,使用这个dn能登陆openldap

    优化ldap配置参数

    [root@dev openldap]# vim /etc/openldap/slapd.conf
    loglevel 296                    #定义日志级别
    cachesize 1000                  #换成条目数
    checkpoint 2048 10              #表示内存中达到2048k或者10分钟,执行一次checkpoint,即写入数据文件的操作

    配置相关权限

    [root@dev openldap]# vim /etc/openldap/slapd.conf
    #删除默认权限,将下面的内容都删除
    database config
    access to *
            by dn.exact="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" manage
            by * none
     
    # enable server status monitoring (cn=monitor)
    database monitor
    access to *
            by dn.exact="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" read
            by dn.exact="cn=Manager,dc=my-domain,dc=com" read
            by * none
            
    #添加新的权限(这是2.3的权限设置方式)
    access to *
            by self write
            by anonymous auth
            by * read

    配置syslog记录ldap的服务日志

    [root@dev openldap]# cp /etc/rsyslog.conf /etc/rsyslog.conf_`date +%Y%m%d`.bak
     
    #往配置文件中增加如下内容
    [root@dev openldap]# tail -1 /etc/rsyslog.conf
    local4.*                    /var/log/ldap.log
     
    #重启rsyslog服务
    [root@dev openldap]# /etc/init.d/rsyslog restart
    Shutting down system logger:                               [  OK  ]
    Starting system logger:                                    [  OK  ]

    配置ldap数据库路径

    #创建数据文件
    [root@dev openldap]# cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
    [root@dev openldap]# chown ldap.ldap /var/lib/ldap/DB_CONFIG 
    [root@dev openldap]# chmod 700 /var/lib/ldap/
    [root@dev openldap]# ll /var/lib/ldap/
    total 4
    -rw-r--r-- 1 ldap ldap 845 Jul 13 21:05 DB_CONFIG
     
    [root@dev openldap]# egrep -v "#|^$" /var/lib/ldap/DB_CONFIG 
    set_cachesize 0 268435456 1
    set_lg_regionmax 262144
    set_lg_bsize 2097152
    [root@dev openldap]# slaptest -u            #检查配置文件是否正常
    config file testing succeeded

    ldap最后的完整配置如下

    [root@dev openldap]# egrep -v "#|^$" /var/lib/ldap/DB_CONFIG 
    set_cachesize 0 268435456 1
    set_lg_regionmax 262144
    set_lg_bsize 2097152
    [root@dev openldap]# slaptest -u
    config file testing succeeded
    [root@dev openldap]# egrep -v "^#|^$" /etc/openldap/slapd.conf
    include     /etc/openldap/schema/corba.schema
    include     /etc/openldap/schema/core.schema
    include     /etc/openldap/schema/cosine.schema
    include     /etc/openldap/schema/duaconf.schema
    include     /etc/openldap/schema/dyngroup.schema
    include     /etc/openldap/schema/inetorgperson.schema
    include     /etc/openldap/schema/java.schema
    include     /etc/openldap/schema/misc.schema
    include     /etc/openldap/schema/nis.schema
    include     /etc/openldap/schema/openldap.schema
    include     /etc/openldap/schema/ppolicy.schema
    include     /etc/openldap/schema/collective.schema
    allow bind_v2
    pidfile     /var/run/openldap/slapd.pid
    argsfile    /var/run/openldap/slapd.args
    TLSCACertificatePath /etc/openldap/certs
    TLSCertificateFile ""OpenLDAP Server""
    TLSCertificateKeyFile /etc/openldap/certs/password
    access to *
        by self write
        by anonymous auth
        by * read
    database    bdb
    suffix      "dc=dev,dc=com"
    checkpoint  1024 15
    rootdn      "cn=admin,dc=dev,dc=com"
    directory   /var/lib/ldap
    index objectClass                       eq,pres
    index ou,cn,mail,surname,givenname      eq,pres,sub
    index uidNumber,gidNumber,loginShell    eq,pres
    index uid,memberUid                     eq,pres,sub
    index nisMapName,nisMapEntry            eq,pres,sub
    rootpw  {SSHA}6jZP4UfMlMfN0XKPch70R5+TiRCV+yT7
    loglevel 296
    cachesize 1000
    checkpoint 2048 10

    三.启动ldap服务

    [root@dev ~]# /etc/init.d/slapd start
    Starting slapd:                                            [  OK  ]
    [root@dev ~]# ps aux |grep ldap
    ldap      2012  0.3  1.9 490532 19656 ?        Ssl  21:13   0:00 /usr/sbin/slapd -h  ldap:/// ldapi:/// -u ldap
    root      2018  0.0  0.0 103248   872 pts/0    S+   21:14   0:00 grep ldap
    [root@dev ~]# netstat -tunlp |grep slapd
    tcp        0      0 0.0.0.0:389                 0.0.0.0:*                   LISTEN      2012/slapd          
    tcp        0      0 :::389                      :::*                        LISTEN      2012/slapd        #普通端口389,加密后的是689
     
    #添加到开机自启动
    [root@dev ~]# chkconfig slapd on
     
    #查看日志文件
    [root@dev ~]# tail /var/log/ldap.log 
    Jul 13 21:14:00 dev slapd[2011]: @(#) $OpenLDAP: slapd 2.4.39 (Oct 15 2014 09:51:43) $#012#011mockbuild@c6b8.bsys.dev.centos.org:/builddir/build/BUILD/openldap-2.4.39/openldap-2.4.39/build-servers/servers/slapd

    查询一下ldap的内容

    [root@dev ~]# ldapsearch -LLL -W -x -H ldap://dev.com -D "cn=admin,dc=dev,dc=com" -b "dc=dev,dc=com" "(uid=*)"
    Enter LDAP Password: 
    ldap_bind: Invalid credentials (49)        #这里报错
     
    #解决如下,删除默认2.4的配置文件,重新生成2.3的配置文件
    [root@dev ~]# rm -rf /etc/openldap/slapd.d/*
    [root@dev ~]# slaptest -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d/
    55a3bf76 bdb_monitor_db_open: monitoring disabled; configure monitor database to enable
    config file testing succeeded                                          [  OK  ]
    [root@dev ~]# ll /etc/openldap/slapd.d/
    total 8
    drwxr-x--- 3 root root 4096 Jul 13 21:39 cn=config
    -rw------- 1 root root 1302 Jul 13 21:39 cn=config.ldif
     
    #重启服务
    [root@dev ~]# /etc/init.d/slapd restart
    Stopping slapd:                                            [  OK  ]
    Checking configuration files for slapd:                    [FAILED]
    55a3bfd6 ldif_read_file: Permission denied for "/etc/openldap/slapd.d/cn=config.ldif"
    slaptest: bad configuration file!
    [root@dev ~]# chown -R ldap.ldap /etc/openldap/slapd.d
    [root@dev ~]# /etc/init.d/slapd restart
    Stopping slapd:                                            [FAILED]
    Starting slapd:                                            [  OK  ]
     
    [root@dev ~]# netstat -tunlp |grep slapd
    tcp        0      0 0.0.0.0:389                 0.0.0.0:*                   LISTEN      5906/slapd          
    tcp        0      0 :::389                      :::*                        LISTEN      5906/slapd
     
    #再重新查询ldap内容
    [root@dev ~]# ldapsearch -LLL -W -x -H ldap://dev.com -D "cn=admin,dc=dev,dc=com" -b "dc=dev,dc=com" "(uid=*)"
    Enter LDAP Password:         #密码是上文中的weyee
    No such object (32)            #ldap中还没有任何数据

    附上2个脚本

    添加本地存在用户到目录服务

    #脚本内容
    [root@dev ~]# cat ldapuser.sh 
    ###### ldapuser script start ######
    # extract local users who have 500-999 digit UID
    # replace "SUFFIX=***" to your own suffix
    # this is an example
    #!/bin/bash
     
    SUFFIX='dc=dev,dc=com'
    LDIF='ldapuser.ldif'
     
    echo -n > $LDIF
    for line in `grep "x:[5-9][0-9][0-9]:" /etc/passwd sed -e "s/ /%/g"`
    do
       UID1=`echo $line | cut -d: -f1`
       NAME=`echo $line | cut -d: -f5 | cut -d, -f1`
       if [ ! "$NAME" ]
       then
          NAME=$UID1
       else
          NAME=`echo $NAME | sed -e "s/%/ /g"`
       fi
       SN=`echo $NAME | awk '{print $2}'`
       if [ ! "$SN" ]
       then
          SN=$NAME
       fi
       GIVEN=`echo $NAME | awk '{print $1}'`
       UID2=`echo $line | cut -d: -f3`
       GID=`echo $line | cut -d: -f4`
       PASS=`grep $UID1: /etc/shadow cut -d: -f2`
       SHELL=`echo $line | cut -d: -f7`
       HOME=`echo $line | cut -d: -f6`
       EXPIRE=`passwd -S $UID1 | awk '{print $7}'`
       FLAG=`grep $UID1: /etc/shadow cut -d: -f9`
       if [ ! "$FLAG" ]
       then
          FLAG="0"
       fi
       WARN=`passwd -S $UID1 | awk '{print $6}'`
       MIN=`passwd -S $UID1 | awk '{print $4}'`
       MAX=`passwd -S $UID1 | awk '{print $5}'`
       LAST=`grep $UID1: /etc/shadow cut -d: -f3`
     
       echo "dn: uid=$UID1,ou=people,$SUFFIX" >> $LDIF
       echo "objectClass: inetOrgPerson" >> $LDIF
       echo "objectClass: posixAccount" >> $LDIF
       echo "objectClass: shadowAccount" >> $LDIF
       echo "uid: $UID1" >> $LDIF
       echo "sn: $SN" >> $LDIF
       echo "givenName: $GIVEN" >> $LDIF
       echo "cn: $NAME" >> $LDIF
       echo "displayName: $NAME" >> $LDIF
       echo "uidNumber: $UID2" >> $LDIF
       echo "gidNumber: $GID" >> $LDIF
       echo "userPassword: {crypt}$PASS" >> $LDIF
       echo "gecos: $NAME" >> $LDIF
       echo "loginShell: $SHELL" >> $LDIF
       echo "homeDirectory: $HOME" >> $LDIF
       echo "shadowExpire: $EXPIRE" >> $LDIF
       echo "shadowFlag: $FLAG" >> $LDIF
       echo "shadowWarning: $WARN" >> $LDIF
       echo "shadowMin: $MIN" >> $LDIF
       echo "shadowMax: $MAX" >> $LDIF
       echo "shadowLastChange: $LAST" >> $LDIF
       echo >> $LDIF
    done
    ###### ldapuser script end ######
     
    #使用方法
    [root@dev ~]# sh ldapuser.sh 
    [root@dev ~]# ldapadd -x -D cn=admin,dc=dev,dc=com -W -f ldapuser.ldif

    添加本地存在组到目录服务

    #脚本内容
    [root@dev ~]# cat ldapgroup.sh
    # extract local groups who have 500-999 digit UID
    # replace "SUFFIX=***" to your own suffix
    # this is an example
    #!/bin/bash
     
    SUFFIX='dc=dev,dc=com'
    LDIF='ldapgroup.ldif'
     
    echo -n > $LDIF
    for line in `grep "x:[5-9][0-9][0-9]:" /etc/group`
    do
       CN=`echo $line | cut -d: -f1`
       GID=`echo $line | cut -d: -f3`
       echo "dn: cn=$CN,ou=groups,$SUFFIX" >> $LDIF
       echo "objectClass: posixGroup" >> $LDIF
       echo "cn: $CN" >> $LDIF
       echo "gidNumber: $GID" >> $LDIF
       users=`echo $line | cut -d: -f4 | sed "s/,/ /g"`
       for user in ${users} ; do
          echo "memberUid: ${user}" >> $LDIF
       done
       echo >> $LDIF
    done
     
    #使用方法和前面的脚本一样

    添加一个系统用户,使用脚本添加进ldap中

    #创建系统用户user1,设置密码user1
    [root@dev ~]# useradd user1
    [root@dev ~]# passwd user1
    Changing password for user user1.
    New password: 
    BAD PASSWORD: it is too short
    BAD PASSWORD: is too simple
    Retype new password: 
    passwd: all authentication tokens updated successfully.

    四.安装migrationtools

     
    [root@dev ~]# yum install migrationtools -y

    编辑migrationtool的配置文件/usr/share/migrationtools/migrate_common.ph

    [root@dev ~]# vim /usr/share/migrationtools/migrate_common.ph
    # Default DNS domain
    $DEFAULT_MAIL_DOMAIN = "dev.com";
     
    # Default base 
    $DEFAULT_BASE = "dc=dev,dc=com";

    下面利用pl脚本将/etc/passwd 和/etc/shadow生成LDAP能读懂的文件格式,保存在/tmp/下

    [root@dev ~]# /usr/share/migrationtools/migrate_base.pl >/tmp/base.ldif
    [root@dev ~]# /usr/share/migrationtools/migrate_passwd.pl /etc/passwd >/tmp/passwd.ldif
    [root@dev ~]# /usr/share/migrationtools/migrate_passwd.pl /etc/group >/tmp/group.ldif

    下面就要把这三个文件导入到LDAP,这样LDAP的数据库里就有了我们想要的用户

    #导入base
    [root@dev ~]# ldapadd -x -D "cn=admin,dc=dev,dc=com" -W -f /tmp/base.ldif 
    Enter LDAP Password: 
    adding new entry "dc=dev,dc=com"
     
    adding new entry "ou=Hosts,dc=dev,dc=com"
     
    adding new entry "ou=Rpc,dc=dev,dc=com"
     
    adding new entry "ou=Services,dc=dev,dc=com"
     
    adding new entry "nisMapName=netgroup.byuser,dc=dev,dc=com"
     
    adding new entry "ou=Mounts,dc=dev,dc=com"
     
    adding new entry "ou=Networks,dc=dev,dc=com"
     
    adding new entry "ou=People,dc=dev,dc=com"
     
    adding new entry "ou=Group,dc=dev,dc=com"
     
    adding new entry "ou=Netgroup,dc=dev,dc=com"
     
    adding new entry "ou=Protocols,dc=dev,dc=com"
     
    adding new entry "ou=Aliases,dc=dev,dc=com"
     
    adding new entry "nisMapName=netgroup.byhost,dc=dev,dc=com"
     
    #导入passwd
    [root@dev ~]# ldapadd -x -D "cn=admin,dc=dev,dc=com" -W -f /tmp/passwd.ldif 
    Enter LDAP Password: 
    adding new entry "uid=root,ou=People,dc=dev,dc=com"
     
    adding new entry "uid=bin,ou=People,dc=dev,dc=com"
     
    adding new entry "uid=daemon,ou=People,dc=dev,dc=com"
     
    adding new entry "uid=adm,ou=People,dc=dev,dc=com"
     
    adding new entry "uid=lp,ou=People,dc=dev,dc=com"
     
    adding new entry "uid=sync,ou=People,dc=dev,dc=com"
     
    adding new entry "uid=shutdown,ou=People,dc=dev,dc=com"
     
    adding new entry "uid=halt,ou=People,dc=dev,dc=com"
     
    adding new entry "uid=mail,ou=People,dc=dev,dc=com"
     
    adding new entry "uid=uucp,ou=People,dc=dev,dc=com"
     
    adding new entry "uid=operator,ou=People,dc=dev,dc=com"
     
    adding new entry "uid=games,ou=People,dc=dev,dc=com"
     
    adding new entry "uid=gopher,ou=People,dc=dev,dc=com"
     
    adding new entry "uid=ftp,ou=People,dc=dev,dc=com"
     
    adding new entry "uid=nobody,ou=People,dc=dev,dc=com"
     
    adding new entry "uid=dbus,ou=People,dc=dev,dc=com"
     
    adding new entry "uid=vcsa,ou=People,dc=dev,dc=com"
     
    adding new entry "uid=abrt,ou=People,dc=dev,dc=com"
     
    adding new entry "uid=haldaemon,ou=People,dc=dev,dc=com"
     
    adding new entry "uid=ntp,ou=People,dc=dev,dc=com"
     
    adding new entry "uid=saslauth,ou=People,dc=dev,dc=com"
     
    adding new entry "uid=postfix,ou=People,dc=dev,dc=com"
     
    adding new entry "uid=sshd,ou=People,dc=dev,dc=com"
     
    adding new entry "uid=tcpdump,ou=People,dc=dev,dc=com"
     
    adding new entry "uid=rpc,ou=People,dc=dev,dc=com"
     
    adding new entry "uid=hacluster,ou=People,dc=dev,dc=com"
     
    adding new entry "uid=rpcuser,ou=People,dc=dev,dc=com"
     
    adding new entry "uid=nfsnobody,ou=People,dc=dev,dc=com"
     
    adding new entry "uid=ldap,ou=People,dc=dev,dc=com"
     
    adding new entry "uid=nscd,ou=People,dc=dev,dc=com"
     
    adding new entry "uid=nslcd,ou=People,dc=dev,dc=com"
     
    adding new entry "uid=user1,ou=People,dc=dev,dc=com"
     
    #导入group
    [root@dev ~]# ldapadd -x -D "cn=admin,dc=dev,dc=com" -W -f /tmp/group.ldif

    再次查询ldap的内容

    [root@dev ~]# ldapsearch -LLL -W -x -H ldap://dev.com -D "cn=admin,dc=dev,dc=com" -b "dc=dev,dc=com" "(uid=user1)"  
    Enter LDAP Password: 
    dn: uid=user1,ou=People,dc=dev,dc=com
    uid: user1            #这里我们只查询user1
    cn: user1
    objectClass: account
    objectClass: posixAccount
    objectClass: top
    objectClass: shadowAccount
    userPassword:: e2NyeXB0fSQxJC5CTHJNWDJEJE9FYnNMc2N4S3NQQ2liLk5uVC5ZMTA=
    shadowLastChange: 16629
    shadowMin: 0
    shadowMax: 99999
    shadowWarning: 7
    loginShell: /bin/bash
    uidNumber: 500
    gidNumber: 500
    homeDirectory: /home/user1
     
     
    #不用输入密码查询
    [root@dev ~]# ldapsearch -LLL -w weyee -x -H ldap://dev.com -D "cn=admin,dc=dev,dc=com" -b "dc=dev,dc=com" "(uid=user1)" 
    dn: uid=user1,ou=People,dc=dev,dc=com
    uid: user1
    cn: user1
    objectClass: account
    objectClass: posixAccount
    objectClass: top
    objectClass: shadowAccount
    userPassword:: e2NyeXB0fSQxJC5CTHJNWDJEJE9FYnNMc2N4S3NQQ2liLk5uVC5ZMTA=
    shadowLastChange: 16629
    shadowMin: 0
    shadowMax: 99999
    shadowWarning: 7
    loginShell: /bin/bash
    uidNumber: 500
    gidNumber: 500
    homeDirectory: /home/user1

    备份ldap数据

     
    [root@dev ~]# ldapsearch -LLL -w weyee -x -H ldap://dev.com -D "cn=admin,dc=dev,dc=com" -b "dc=dev,dc=com" >ldap.bak

    五.安装配置ldap客户端phpladpadmin

    #安装epel源
     
    [root@dev ~]# yum install httpd php php-ldap php-gd -y

  • 相关阅读:
    ping与telnet的区别
    TCP连接的建立与关闭
    网络的7层协议
    oracle数据库中,分天查询数目
    求某个字符在字符串中的第5个位置
    高精度乘
    高精度加法
    二叉排序树(建树,先序,中序,后序遍历)
    求哈夫曼树的带权路径长度和
    HDU_1237_简单计算器
  • 原文地址:https://www.cnblogs.com/dailidong/p/7571172.html
Copyright © 2011-2022 走看看