Ubuntu14下OpenLdap常规的安装方法是:
apt-get install slapd ldap-utils
dpkg-reconfigure slapd
绿色版OpenLdap的好处是,在相同操作系统环境下,解压到任意目录就可以使用,所有东西都在一个目录里,不需要安装配置,带数据,不像常规方法安装后配置、数据、库,二进制文件东一块西一块。
制作绿色版OpenLdap的关键,主要是相关目录的配置,服务启动方法,以及如何绕过一些坑儿。
制作过程:
1. 在已经安装好openLdap的Ubuntu14上,参考slapd.conf,从各个相关目录提取文件,放到openldap目录下的对应文件夹下(比如把/usr/local/libexec/openldap下的东西都放到mod目录下。其中lib目录下需要复制如下文件:libasn1.so.8 libheimbase.so.1 libkrb5.so.26 libltdl.so.7 libslapi-2.4.so.2
libgssapi.so.3 libheimntlm.so.0 liblber-2.4.so.2 libroken.so.18 libslp.so.1
libhcrypto.so.4 libhx509.so.5 libldap_r-2.4.so.2 libsasl2.so.2 libwind.so.0),定制slapd.conf:
# slapd.conf - Configuration file for LDAP SLAPD
##########
# Basics #
##########
#include /etc/ldap/schema/core.schema
#include /etc/ldap/schema/cosine.schema
#include /etc/ldap/schema/inetorgperson.schema
include conf/schema/core.schema
include conf/schema/corba.schema
include conf/schema/cosine.schema
include conf/schema/inetorgperson.schema
include conf/schema/misc.schema
include conf/schema/openldap.schema
include conf/schema/nis.schema
include conf/schema/java.schema
#include /etc/ldap/schema/powerChina.schema
pidfile run/slapd.pid
argsfile run/slapd.args
loglevel none
modulepath mod
# modulepath /usr/local/libexec/openldap
moduleload back_hdb
##########################
# Database Configuration #
##########################
database hdb
suffix "o=moxiaobei,c=cn"
rootdn "cn=admin,o=moxiaobei,c=cn"
rootpw yourpassword
directory data
# directory /usr/local/var/openldap-data
index objectClass,cn eq
########
# ACLs #
########
access to attrs=userPassword
by anonymous auth
by self write
by * none
access to *
by self write
by * none
2. 启动:start_openldap.sh
#!/bin/bash
ps -ef|grep -v grep|grep slapd|while read u p o
do
kill -9 $p
#echo $p
done
sleep 1
export LD_LIBRARY_PATH=lib
export PATH=bin:$PATH
nohup slapd -d 1 -h "ldap://:389 ldapi://xx" -g root -u root -f conf/slapd.conf &
sleep 1
echo ""
echo "Openldap已经启动!"
注意这里的一个坑儿:ldapi://xx,表示启动后在当前目录下产生一个名为xx的socket文件。
如果想把这个socket文件放在其他目录下,需要把路径里的/写成%2f,如放到当前目录下的run目录下:
ldapi://.%2frun%2fxx
5. 测试:
把openldap目录打包复制到其他未安装OpenLdap的Ubuntu14上,解压到任意目录,运行start_openldap.sh,看看是否启动成功。
6.20190218补充:备份恢复数据方法
backup_ldap.sh
#!/bin/bash
# https://www.cnblogs.com/silenceli/p/3488304.html
backup_file=/opt/db_backup/ldap2.ldif
rm -fr $backup_file
export PATH=/opt/openldap_2442_master_389/bin:$PATH
ldapsearch -x -D "cn=admin,dc=test,dc=cn" -w adminpassword -b "dc=test,dc=cn" > $backup_file
restore_ldap.sh
#!/bin/bash
# https://www.cnblogs.com/silenceli/p/3488304.html
backup_file=/opt/db_backup/ldap2.ldif
export PATH=/opt/openldap_2442_master_389/bin:$PATH
ldapadd -H ldap://127.0.0.1 -x -D "cn=admin,dc=test,dc=cn" -f $backup_file -w adminpassword -c
-c 参数作用:发生错误时继续运行。有重复数据时会跳过继续。