Linux之CentOS 6.6 安装OpenLDAP(1)

摘要

使用轻量级目录访问协议(LDAP)构建集中的身份验证系统可以减少管理成本,增强安全性,避免数据复制的问题,并提高数据的一致性。随着 Linux® 的成熟,已经出现了很多工具用来简化用户帐号信息到 LDAP 目录的迁移。还开发了一些工具用来在客户机和目录服务器之间启用加密通信配置,并通过复制提供容错性。本文将向您展示如何配置服务器在 CentOS6.6 上使用 OpenLDAP(Lightweight Directory Access Protocol)。

不说什么了纯安装步骤具体的文字说明等回头有时间再来补上吧

[root@Legion80 ~]# yum install openldap-servers openldap-clients migrationtools -y
[root@Legion80 ~]# chkconfig slapd on
[root@Legion80 ~]# service slapd start
[root@Legion182 ~]# service slapd status
slapd (pid  36325) 正在运行...
[root@Legion182 ~]# ss -tnlp | egrep '389|636'
LISTEN     0      1024                     :::389                     :::*      users:(("slapd",36325,8))
LISTEN     0      1024                      *:389                      *:*      users:(("slapd",36325,7))
LISTEN     0      1024                     :::636                     :::*      users:(("slapd",36325,10))
LISTEN     0      1024                      *:636                      *:*      users:(("slapd",36325,9))
[root@Legion182 ~]# ldapsearch -x -b '' -s base '(objectclass=*)'
# extended LDIF
#
# LDAPv3
# base <> with scope baseObject
# filter: (objectclass=*)
# requesting: ALL
#

#
dn:
objectClass: top
objectClass: OpenLDAProotDSE

# search result
search: 2
result: 0 Success

# numResponses: 2
# numEntries: 1
[root@Legion182 ~]# 
[root@Legion80 ~]# vi /etc/sysconfig/ldap
[root@Legion80 ~]# sed -ri 's/(SLAPD_LDAPS).*/\1=yes/' /etc/sysconfig/ldap
[root@Legion80 ~]# cat > /etc/openldap/slapd.conf <<EOF
pidfile		/var/run/openldap/slapd.pid
argsfile	/var/run/openldap/slapd.args
EOF
[root@Legion80 ~]# \rm -rf /etc/openldap/slapd.d/*
[root@Legion80 ~]# slaptest -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d/
config file testing succeeded
[root@Legion80 ~]# sed -ri 's/^(olcAccess:).*/\1 {0}to *  by dn.exact=gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth manage by * break/' /etc/openldap/slapd.d/cn\=config/olcDatabase\=\{0\}config.ldif
[root@Legion80 ~]# cat >/etc/openldap/slapd.d/cn\=config/olcDatabase\=\{1\}monitor.ldif <<EOF
dn: olcDatabase={1}monitor
objectClass: olcDatabaseConfig
olcDatabase: {1}monitor
olcAccess: {1}to * by dn.exact=gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth manage by * break
olcAddContentAcl: FALSE
olcLastMod: TRUE
olcMaxDerefDepth: 15
olcReadOnly: FALSE
olcMonitoring: FALSE
structuralObjectClass: olcDatabaseConfig
creatorsName: cn=config
modifiersName: cn=config
EOF
[root@Legion80 ~]# chown -R ldap /etc/openldap/slapd.d
[root@Legion80 ~]# chmod -R 700 /etc/openldap/slapd.d
[root@Legion80 ~]# service slapd restart
停止 slapd:                                               [确定]
正在检查 slapd 的配置文件:                                [警告]
55b61339 ldif_read_file: checksum error on "/etc/openldap/slapd.d/cn=config/olcDatabase={0}config.ldif"
config file testing succeeded
正在启动 slapd:                                           [确定]

对于上面上面提示“正在检查 slapd 的配置文件: [警告]
55b61339 ldif_read_file: checksum error on "/etc/openldap/slapd.d/cn=config/olcDatabase={0}config.ldif"的警告信息解决方法

[root@Legion182 ~]# yum install zlib-devel
[root@Legion182 ~]# wget http://www.dwhd.org/wp-content/uploads/2015/07/check-4.3-src.tgz
[root@Legion182 ~]# tar xf check-4.3-src.tgz
[root@Legion182 ~]# cd check-4.3/
[root@Legion182 ~/check-4.3]# gcc -O3 -Wall -DUSE_ZLIB -I/usr/include -o check check.c -L/usr/lib64 -lz
check.c: 在函数‘main’中:
check.c:324: 警告:传递‘crc32’的参数 2 给指针时,目标与指针符号不一致
/usr/include/zlib.h:1285: 附注:需要类型‘const Bytef *’,但实参的类型为‘char *’
[root@Legion182 ~/check-4.3]# echo $?
0
[root@Legion182 ~/check-4.3]# cd ..
[root@Legion182 ~]# cp /etc/openldap/slapd.d/cn=config/olcDatabase={0}config.ldif check.ldif
[root@Legion182 ~]# tail -n +3 check.ldif > checkout.ldif
[root@Legion182 ~]# ./check-4.3/check checkout.ldif
checkout.ldif                    CRC-32 = 2a0306fb, size = 589 bytes
###看到了没有这里的2a0306fb这个值就是我们需要的。将这个值换到 \
###/etc/openldap/slapd.d/cn=config/olcDatabase={0}config.ldif check.ldif这个文件里面

Linux之CentOS 6.6 安装OpenLDAP(1)
使用cksfv也是可以的

[root@Legion182 ~]# yum install cksfv -y
[root@Legion182 ~]# cksfv checkout.ldif
; Generated by cksfv v1.3.14 on 2015-07-28 at 19:08.25
; Project web site: http://www.iki.fi/shd/foss/cksfv/
;
;          589  18:49.55 2015-07-28 checkout.ldif
checkout.ldif 2A0306FB
[root@Legion182 ~]# 

Linux之CentOS 6.6 安装OpenLDAP(1)
这里为了方便我自己以后的使用,我写了个shell脚本

[root@Legion182 ~]# wget http://www.dwhd.org/script/checkCRC32.sh
[root@Legion182 ~]# bash checkCRC32.sh checkout.ldif
2A0306FB
[root@Legion182 ~]#

Linux之CentOS 6.6 安装OpenLDAP(1)
脚本源码

#!/bin/bash
#########################################################################
# File Name: checkCRC32.sh
# Author: LookBack
# Email: admin#dwhd.org
# Version:
# Created Time: 2015年07月28日 星期二 19时15分44秒
#########################################################################

if ! which cksfv >/dev/null 2>&1; then yum install cksfv -y && clear;fi

checksum() {
	ckSum=$(cksfv -b -q $1 | awk '{if ($1=="'$1'" && length($2)=="8"){print $2}}')
	#ckSum=$(cksfv -b -q $1)
	echo -e "File: $1\n\e[31m$ckSum\e[0m"
}

if [ -f $1 ]; then
	ckFileDir=$(dirname $1)
	ckFileFile=$(basename $1)
	[ -n "$ckFileDir" ] && cd $ckFileDir || ckFileFile=$1
	checksum $ckFileFile
else
	echo "$1 is not a file"
fi

Linux之CentOS 6.6 安装OpenLDAP(1)

[root@Legion80 ~]# ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/core.ldif
[root@Legion80 ~]# ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/cosine.ldif
[root@Legion80 ~]# ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/nis.ldif
[root@Legion80 ~]# ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/inetorgperson.ldif

Linux之CentOS 6.6 安装OpenLDAP(1)

[root@Legion182 ~]# slappasswd
New password:
Re-enter new password:
{SSHA}W36vGeEuH9RzQ3LISX54IxXhsTT5cS1A
[root@Legion182 ~]# 这里需要记下输出的值,就是{SSHA}W36vGeEuH9RzQ3LISX54IxXhsTT5cS1A
[root@Legion182 ~]# 

Linux之CentOS 6.6 安装OpenLDAP(1)

[root@Legion182 ~]# cat >backend.ldif<<EOF
dn: cn=module,cn=config
objectClass: olcModuleList
cn: module
olcModulepath: /usr/lib64/openldap
olcModuleload: back_hdb

dn: olcDatabase=hdb,cn=config
objectClass: olcDatabaseConfig
objectClass: olcHdbConfig
olcDatabase: {2}hdb
olcSuffix: dc=dwhd,dc=org
olcDbDirectory: /var/lib/ldap
olcRootDN: cn=root,dc=dwhd,dc=org
olcRootPW: {SSHA}W36vGeEuH9RzQ3LISX54IxXhsTT5cS1A
olcDbConfig: set_cachesize 0 2097152 0
olcDbConfig: set_lk_max_objects 1500
olcDbConfig: set_lk_max_locks 1500
olcDbConfig: set_lk_max_lockers 1500
olcDbIndex: objectClass eq
olcLastMod: TRUE
olcMonitoring: TRUE
olcDbCheckpoint: 512 30
olcAccess: to attrs=userPassword by dn="cn=root,dc=dwhd,dc=org" write by anonymous auth by self write by * none
olcAccess: to attrs=shadowLastChange by self write by * read
olcAccess: to dn.base="" by * read
olcAccess: to * by dn="cn=root,dc=dwhd,dc=org" write by * read
EOF
[root@Legion182 ~]# ldapadd -Y EXTERNAL -H ldapi:/// -f backend.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"

adding new entry "olcDatabase=hdb,cn=config"

Linux之CentOS 6.6 安装OpenLDAP(1)

[root@Legion182 ~]# cat > frontend.ldif <<EOF

dn: dc=dwhd,dc=org
objectClass: top
objectClass: dcObject
objectclass: organization
o: Server World
dc: dwhd
#上面一行的dc和下面一行的dc必须保证一致性,否则后面是会报错的

dn: cn=root,dc=dwhd,dc=org
objectClass: simpleSecurityObject
objectClass: organizationalRole
cn: root
userPassword: {SSHA}GgyFpOjUYXys/H1u6kxMWYje+0Eshgj2

dn: ou=people,dc=dwhd,dc=org
objectClass: organizationalUnit
ou: people

dn: ou=groups,dc=dwhd,dc=org
objectClass: organizationalUnit
ou: groups
EOF
[root@Legion182 ~]# ldapadd -x -D "cn=root,dc=dwhd,dc=org" -w lookback -f frontend.ldif#这里的lookback就是上面slappasswd命令创建密码时候的明文
adding new entry "dc=dwhd,dc=org"

adding new entry "cn=root,dc=dwhd,dc=org"

adding new entry "ou=people,dc=dwhd,dc=org"

adding new entry "ou=groups,dc=dwhd,dc=org"

[root@Legion182 ~]# 

Linux之CentOS 6.6 安装OpenLDAP(1)

[root@Legion182 ~]# service slapd restart 
停止 slapd:                                               [确定]
正在启动 slapd:                                           [确定]
[root@Legion182 ~]#

到了这里 openldap server就装好了

lookback
  • 本文由 发表于 2015年7月28日14:04:32
  • 除非特殊声明,本站文章均为原创,转载请务必保留本文链接
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: