OpenLDAP 内容概述与源码编译安装

1、Ldap 目录服务介绍(active directory)

目录是一类为了浏览和搜索数据为设计的特殊的数据库,目录服务是按照树状存储信息的目录进行更新的操作,可以说是要么全部,要么都不得原子性操作,目录不支持大多数事物型数据库所支持的高吞吐量和复杂的更新操作,适应于大量的查询和搜索操作,为了保证数据的可靠性和可用性,他也有主从服务器同步数据信息能力。

ldap 也可以一主多从.ldap 可以说是活动目录在linux上的一个开源实现.

2、什么是 Ldap

LDAP是轻量级目录访问协议(lightweight directory access protocol),LDAP运行在TCP/IP或者其他的面向连接传输之上。

LDAP是在X.500标准上产生的一个简化版本

3、安装依赖包

yum -y install gcc-c++ make wget libtool-ltdl libtool-ltdl-devel cyrus-sasl cyrus-sasl-devel openssl openssl-devel

4、OpenLDAP 源码编译安装

cd /server/
mkdir -p /usr/local/openldap
wget ftp://ftp.openldap.org/pub/OpenLDAP/openldap-release/openldap-2.4.47.tgz
tar xf openldap-2.4.47.tgz
cd openldap-2.4.47
./configure --prefix=/usr/local/openldap \
--enable-mdb \
--enable-bdb=no \
--enable-hdb=no \
--enable-syslog \
--enable-modules \
--enable-debug \
--with-tls \
--enable-crypt \
--enable-spasswd \
--enable-slapi \
--enable-ldap \
--enable-monitor \
--enable-overlays \
--enable-ppolicy \
--with-cyrus-sasl \
--enable-debug
make depend
make
其中 make test一步时间较长 test60多 在test45 左右可以按Ctrl+c 结束掉
make test
netstat -tunlp |grep 9011
make install

5、配置环境变量

cat >> /etc/profile.d/openldap.sh  << EOF
export PATH=/usr/local/openldap/sbin:/usr/local/openldap/bin:/usr/local/openldap/libexec:\$PATH
EOF

6、生效环境变量

source /etc/profile.d/openldap.sh

或者设置可执行命令

ln -s /usr/local/src/openldap/bin/* /usr/local/bin/
ln -s /usr/local/src/openldap/sbin/ /usr/local/sbin/

7、查看版本

/usr/local/openldap/libexec/slapd -VV

8、备份配置文件

/bin/cp slapd.conf{,_bak}
/bin/cp slapd.ldif{,_bak}

9、新增日志文件级别与路径,需要在编译时--enable-debug,否则日志文件输出,不影响调试模式

mkdir -p /data/logs/openldaplogs
loglevel    256
logfile    /usr/local/openldap/var/run/slapd.log
egrep -v "#|^$" /usr/local/openldap/etc/openldap/slapd.conf

10、编辑文件slapd.ldif 在5行 core.ldif 下面添加以下内容

vim /usr/local/openldap/etc/openldap/slapd.ldif
include: file:///usr/local/openldap/etc/openldap/schema/collective.ldif
include: file:///usr/local/openldap/etc/openldap/schema/corba.ldif
include: file:///usr/local/openldap/etc/openldap/schema/cosine.ldif
include: file:///usr/local/openldap/etc/openldap/schema/duaconf.ldif
include: file:///usr/local/openldap/etc/openldap/schema/dyngroup.ldif
include: file:///usr/local/openldap/etc/openldap/schema/inetorgperson.ldif
include: file:///usr/local/openldap/etc/openldap/schema/java.ldif
include: file:///usr/local/openldap/etc/openldap/schema/misc.ldif
include: file:///usr/local/openldap/etc/openldap/schema/nis.ldif
include: file:///usr/local/openldap/etc/openldap/schema/openldap.ldif
include: file:///usr/local/openldap/etc/openldap/schema/pmi.ldif
include: file:///usr/local/openldap/etc/openldap/schema/ppolicy.ldif

或者使用 Schemas 命令导入

ldapadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f /usr/local/openldap/etc/openldap/schema/collective.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f /usr/local/openldap/etc/openldap/schema/corba.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f /usr/local/openldap/etc/openldap/schema/core.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f /usr/local/openldap/etc/openldap/schema/cosine.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f /usr/local/openldap/etc/openldap/schema/duaconf.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f /usr/local/openldap/etc/openldap/schema/dyngroup.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f /usr/local/openldap/etc/openldap/schema/inetorgperson.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f /usr/local/openldap/etc/openldap/schema/java.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f /usr/local/openldap/etc/openldap/schema/misc.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f /usr/local/openldap/etc/openldap/schema/nis.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f /usr/local/openldap/etc/openldap/schema/openldap.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f /usr/local/openldap/etc/openldap/schema/pmi.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f /usr/local/openldap/etc/openldap/schema/ppolicy.ldif

11、在90行"LMDB database definitions" 上面添加一下内容

dn: olcDatabase=config,cn=config
objectClass: olcDatabaseConfig
olcDatabase: config
olcAccess: to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" manage by * none

12、修改域名及管理员账户名 在 "LMDB database definitions" 下面

olcSuffix: dc=fooher,dc=com
olcRootDN: cn=fooheradmin,dc=fooher,dc=com

13、生成openldap的管理加密密钥

slappasswd -s "fooher.com"

修改密码

olcRootPW: {SSHA}AEK7muhMQtJIcAqhyp4369HGFZF/5j5y

注意:需要修改的内容如上,每个配置段都以空行分割

14、配置数据库目录 olcDbDirectory

mkdir -p /usr/local/openldap/var/openldap-data
mkdir -p /usr/local/openldap/etc/openldap/slapd.d
slapadd -n 0 -F slapd.d -l slapd.ldif
slapadd -n 0 -F /usr/local/openldap/etc/openldap/slapd.d -l /usr/local/openldap/etc/openldap/slapd.ldif

15、启动

slapd -F /usr/local/openldap/etc/openldap/slapd.d -h "ldap:/// ldapi:///"

查看是否启动成功

ps -aux|grep slapd
ss -tnl | grep 389
lsof -i:389

OpenLDAP 源码编译安装,查看是否启动成功
这个 ‘’ 代表所有路径

ldapsearch -x -b '' -s base '(objectclass=*)' namingContexts

OpenLDAP 源码编译安装,查看搜索结果

16、创建管理员账号

vim config_init.ldif

dn: dc=fooher,dc=com
objectclass: top
objectclass: dcObject
objectclass: organization
o: foohercom
dc: fooher

17、插入数据库

ldapadd -x -D "cn=fooheradmin,dc=fooher,dc=com" -W -f /usr/local/openldap/etc/openldap/config_init.ldif

18、验证账号添加成功

ldapsearch -x -b 'dc=fooher,dc=com' '(objectClass=*)'

OpenLDAP 源码编译安装,验证账号添加成功

ldapsearch -H ldapi:// -Y EXTERNAL -b "cn=config" -LLL –Q