Tuesday, April 21, 2009

设置一个基本的OpenLDAP Server

更多精彩请到 http://www.139ya.com


Berkeley DB : http://www.oracle.com/technology/products/berkeley-db/db/index.html


下载BerkeleyDB
[root@rhas4min79 openldap-2.4.16]# tar zxvf openldap-db-4.7.25.tar.gz
[root@rhas4min79 openldap-2.4.16]# cd soft/db-4.7.25/build_unix/
[root@rhas4min79 openldap-2.4.16]# ../dist/configure --prefix=/usr/local/BerkeleyDB/
#make
#make install
BerkeleyDB安装结束,开始安装OPENLDAP,下载openldap
设置环境变量
export CPPFLAGS="-I/usr/local/BerkeleyDB/include"
export LDFLAGS="-L/usr/local/lib -L/usr/local/BerkeleyDB/lib -R/usr/local/BerkeleyDB/lib"
export LD_LIBRARY_PATH="/usr/local/BerkeleyDB/lib"
# tar zxvf openldap-2.4.16.tgz
# cd openldap-2.4.16
# ./configure --prefix=/usr/local/openldap
# make depend
# make
# make test
# make install

设置一个基本的OpenLDAP Server


一. 目的

本文旨在介绍如何安装OpenLDAP并且设置一个公司内部的集中化的邮件地址薄服务器供客户端查询。
基本上,OpenLDAPg还应用在其它许多方面,象集中化的用户帐号验证服务器,但邮件地址薄查询是最常用的。

二. 安装

从www.openldap.org下载最新的openldap软件包,按照编译和安装的步骤,依次运行:


#tar cvfz openldap-stable-20010524.tgz
#cd openldap-2.0.11
#./configure
#make depend
#make
#make test
#make install

我的操作环境是redhat 6.1,如果没有遇到任何错误,最后默认安装LDAP后台程序slapd到目录/usr/local/libexec;配置文件在目录/usr/local/etc/openldap/ 并且放各种OpenLDAP工具
ldapadd,ldapdelete,ldapmodify,ldapmodrdn,ldappasswd,ldapsearch在目录/usr/local/bin,运行时数据库在/usr/local/var/openldap-ldbm。


三. 设置

1) 更改配置文件/usr/local/etc/openldap/slapd.conf
在include /usr/local/etc/openldap/schema/core.schema这行后面加上下面的行,包括所有的方案。

include /usr/local/etc/openldap/schema/corba.schema
include /usr/local/etc/openldap/schema/cosine.schema
include /usr/local/etc/openldap/schema/inetorgperson.schema
include /usr/local/etc/openldap/schema/java.schema
include /usr/local/etc/openldap/schema/krb5-kdc.schema
include /usr/local/etc/openldap/schema/misc.schema
include /usr/local/etc/openldap/schema/nadf.schema
include /usr/local/etc/openldap/schema/nis.schema
include /usr/local/etc/openldap/schema/openldap.schema

2) 在文件slapd.conf的"ldbm database definitions"部分更改相应的suffix,rootdn行如下

database ldbm
suffix "o=yourdomain,c=us"
rootdn "cn=root,o=yourdomain,c=us"
rootpw secret
directory /usr/local/var/openldap-ldbm

有各种格式你可以用,这里我用的是o=yourdomain,c=us 说明你的公司域名和所在的国家或地区。
rootdn的格式安装后默认为cn=Manager,这里改为root完全是自己的喜好,这样符合Unix/Linux中root具有最高权限的传统。

3) 现在可以启动slapd了,运行/usr/local/libexec/slapd 。

可以考虑把/usr/local/bin and /usr/local/libexec加到搜索路径中,即加到/etc/profile
中的PATH行:
PATH="$PATH:/usr/X11R6/bin:/usr/local/bin:/usr/local/libexec"
这样下次登录后只需键入 slapd 。

4) 测试ldap server是否正常工作。
运行下面的命令检查是否有相应的输出。

#ldapsearch -x -b 'o=yourdomain,c=us' '(objectclass=*)'
陈绪先生注:有误,应该为
ldapsearch -x -b '' -s base '(objectclass=*)' namingContexts
或者
ldapsearch -x -b '' -s base '(objectclass=*)'

5) 编辑.ldif文本文件,用ldapadd添加记录进入LDAP数据库。
文件内容如下:

dn: o=yourdomain,c=us
objectclass: dcobject
objectclass: organization
o: yourdomain
dc: yourdomain

dn: cn=Jephe Wu,o=yourdomain,c=us
objectclass: inetorgperson
cn: Jephe Wu
sn: Wu
mail: jephe_wu@yourdomain.com


......more users......

依次类推,添加每个人的记录进入该文件中,注意对象类型 inetorgperson 至少必须要有cn和sn,这里我们用cn,sn,mail三项定义,这对我们的邮件地址薄功能来说已经足够。你还可以定义象mobile, homephone,pager......等等。

然后用下面的命令添加上面的.ldif文件进入LDAP数据库

#ldapadd -x -D "cn=root,o=yourdomain,c=us" -w secret -f "yourldiffilename"

注:上面的文件的第一部分"dn: o=yourdomain,c=us"是必须的,否则不能添加数据。
用你的公司的域名替换上面的"yourdomain"。

6) 设置Outlook Express, 允许用LDAP服务器查询邮件地址。

"工具/帐号/添加--目录服务",填入你的服务器的IP地址或者主机全称域名,在下一个屏幕中选yes以允许用目录服务来查询地址,最后在"目录服务"栏中选中刚才设置的项目击“属性/高级",在"搜索库"中填入"o=yourdomain,c=us"。
Netscape请根据上面的信息设置相应的选项。

四. 常见使用问题

1) 能启动slapd 没有问题,但不能添加数据库,运行ldapadd添加时出错 "ldap_bind:cannot contact LDAP Server" 。
答: 最可能的原因是在/etc/hosts中没有127.0.0.1 localhost项目。

2) 注意查询顺序: 如果在Outlook Express的地址薄中有内容,则检查地址时地址薄优先,如果在本地地址薄中找不到相应记录,然后再查询LDAP服务器。

3) 用下面的命令确信客户端与LDAP服务器有通讯,在服务器运行下面的命令,然后在OE中测试检查地址,你将会得到查询LDAP数据库的连接过程的输出。

# tcpdump port 389

No comments: