<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html><head><meta http-equiv="Cont

简介: CentOS 6.5安装配置ldap时间:2015-07-14 00:54来源:blog.51cto.com 作者:“ly36843运维” 博客 举报 点击:274次一.

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\t{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

目录
相关文章
|
Web App开发 前端开发 Java
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html><head><meta http-equiv="Cont
线程的状态有:new、runnable、running、waiting、timed_waiting、blocked、dead 当执行new Thread(Runnabler)后,新创建出来的线程处于new状态,这种线程不可能执行 当执行thread.start()后,线程处于runnable状态,这种情况下只要得到CPU,就可以开始执行了。
693 0
|
Web App开发 监控 前端开发
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html><head><meta http-equiv="Cont
Hbase依赖的datanode日志中如果出现如下报错信息:DataXceiverjava.io.EOFException: INFO org.apache.hadoop.hdfs.server.datanode.DataNode: Exception in receiveBlock for block  解决办法:Hbase侧配置的dfs.socket.timeout值过小,与DataNode侧配置的 dfs.socket.timeout的配置不一致,将hbase和datanode的该配置调成大并一致。
764 0
|
Web App开发 前端开发
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html><head><meta http-equiv="Cont
PipeMapRed.waitOutputThreads(): subprocess failed with code X ,这里code X对应的信息如下:error code 1: Operation not perm...
912 0
|
Web App开发 监控 前端开发
|
Web App开发 前端开发 数据库
|
Web App开发 前端开发
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html><head><meta http-equiv="Cont
1.使用lsmod查看ipv6的模块是否被加载。 lsmod | grep ipv6 [root@dmhadoop011 ~]# lsmod | grep ipv6 ipv6                  317340  127 bonding 如果加载了,则进行如下操作: 2.
763 0
|
Web App开发 前端开发
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html><head><meta http-equiv="Cont
如何获取设备特征码、版本号、激活码?方式一 第一步:打开凯立德移动导航系统,进入地图界面,点击“查找”第二步:在查找页面以“快拼”的输入方式下,输入“AAAAAA”(6个A)
946 0
|
Web App开发 前端开发 Java
|
Web App开发 前端开发 程序员
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html><head><meta http-equiv="Cont
如何建立一个“铁打的营盘”? 中国有句古话,叫做铁打的营盘流水的兵。   我相信,创业初期,当团队里有人离开的时候,肯定有不少创业者拿这句话来安慰自己。
781 0