烹茶细论

ubuntu 编译安装openldap

准备在一台内网服务器搭建ldap,发现已经有openldad了,进去目录一看,没有slapd.conf配置文件,以为文件被删,remove再安装才发现这个不使用slapd.conf这个配置文件了,之前都是在Centos上安装,所以就放弃apt-get源安装,直接源码编译。

准备安装包:

openldap:ftp://ftp.openldap.org/pub/OpenLDAP/openldap-release/openldap-2.4.39.tgz
BerkeleyDB:http://pkgs.fedoraproject.org/repo/pkgs/libdb/db-5.3.21.tar.gz/3fda0b004acdaa6fa350bfc41a3b95ca/db-5.3.21.tar.gz

1、安装openldap

1
2
3
4
5
6
# tar -zxvf openldap-2.4.39.tgz
# cd openldap-2.4.39/
# ./configure --prefix=/usr/local/openldap
# make depend
# make
# make install

如果出现configure: error: BDB/HDB: BerkeleyDB not available则安装BerkeleyDB
2、Berkeley DB安装

1
2
3
4
5
# tar -zxvf db-5.3.21.tar.gz
# cd db-5.3.21/build_unix/
# ../dist/configure -prefix=/usr/local/BerkeleyDB
# make
# make install

修改环境变量在/etc/profile文件后面添加,否则会导致找不到DB的库文件

# vimlink
1
2
export CPPFLAGS="-I/usr/local/BerkeleyDB/include"
export LDFLAGS="-L/usr/local/BerkeleyDB/lib"

3、配置ldap
编辑slapd.conf文件

1
# vim /usr/local/openldap/etc/openldap/slapd.conf

include后面添加下面几行

1
2
3
include /usr/local/openldap/etc/openldap/schema/cosine.schema
include /usr/local/openldap/etc/openldap/schema/inetorgperson.schema
include /usr/local/openldap/etc/openldap/schema/nis.schema

允许匿名查看,可以不加。看个人需求,38行附近插入

1
2
3
4
5
6
access to attrs=userPassword
by self write
by anonymous auth
access to *
by dn="cn=root,dc=zdworks,dc=com" write
by * read

修改suffix,rootpw

1
2
3
suffix "dc=test,dc=com"
rootdn "cn=root,dc=zdworks,dc=com"
rootpw 123456 #最好使用加密的密码 如:SSHA

文件末尾加入下面几行

1
2
3
4
5
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

4、启动LDAP

1
2
3
4
正常启动
# /usr/local/openldap/libexec/slapd
开启debug
# /usr/local/openldap/libexec/slapd -d256 -f /usr/local/openldap/etc/openldap/slapd.conf

5、错误解决:
错误1、

/usr/local/openldap/sbin/slaptest

53268d42 bdb_db_open: warning - no DB_CONFIG file found in directory /usr/local/openldap/var/openldap-data: (2).
解决办法:cp /usr/local/openldap/etc/openldap/DB_CONFIG.example /usr/local/openldap/var/openldap-data/DB_CONFIG

错误2、

/usr/local/openldap/sbin/slaptest

53268d42 bdb_monitor_db_open: monitoring disabled; configure monitor database to enable
解决办法:权限设置问题

6、用户添加
我使用的是phpldapadmin客户端,之前有用户的数据表,直接导入。
phpladpadmin安装很方便。这里就不介绍了。