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
这个 ‘’ 代表所有路径
ldapsearch -x -b '' -s base '(objectclass=*)' namingContexts
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=*)'
ldapsearch -H ldapi:// -Y EXTERNAL -b "cn=config" -LLL –Q