ldap其实就是一个数据库,不是数据库怎么存放资料呢?不过跟我们平常的关系数据库有所不同。关系数据库是有一张一张的二维表格来存放数据的。

ldap类似我们的dns系统,是树状的。用节点来存放数据。当然一个树枝可以有n个节点,每个节点上存放的数据,都是以key => value的形式。

就像我们的dns系统。 .是根,下面是com,org,net,cn等等一些树枝,这些树枝下面还有abc.com, bcd.com等等树枝。在每个树枝下面都可以放节点,

其实就是域名下面的主机:www,ftp,mail等等。所有的这些内容,组成了一个dns树,在 ldap里面叫数据库。这下应该很形象了吧。

 

下面说说我的ldap的实现。

1、安装Berkeley DB 4.7.25

先去把berkeley-DB的源代码拉过来(http://www.sleepycat.com/) ,我的是db-4.7.25.tar.gz,openldap需要这东西,这东西其实也没什么不好的,所以我就把它装到/usr/local/BerkeleyDB下去了。

# tar xvf db-4.7.25.tar.gz
# cd db_4.7.25
# cd build_unix/
# ./dist/configure -prefix=/usr/local/BerkeleyDB
# make 
# make install

                                    

注意:安装完成后把执行

# cp /usr/local/BerkeleyDB/include/* /usr/include/
# cp /usr/local/BerkeleyDB/lib/* /usr/lib/

这样为你在下面编译OPENLDAP就不容易出错

2、安装openldap-2.4.15(我下载的是openldap-2.4.15.tgz)

# tar xvf openldap-2.4.15.tgz 
# cd openldap-2.4.15/
# ./configure --prefix=/usr/local/openldap
# make depend
# make
# make install

3、配置文件/usr/local/openldap/etc/openldap/slapd.conf,

我的配置文件看起来应该像下面这样:

#
# See slapd.conf(5) for details on configuration options.
# This file should NOT be world readable.
#
include           /usr/local/openldap/etc/openldap/schema/core.schema
include           /usr/local/openldap/etc/openldap/schema/cosine.schema
include           /usr/local/openldap/etc/openldap/schema/inetorgperson.schema
# Define global ACLs to disable default read access.
 
# Do not enable referrals until AFTER you have a working directory
# service AND an understanding of referrals.
#referral  ldap://root.openldap.org
 
pidfile             /usr/local/openldap/var/run/slapd.pid
argsfile    /usr/local/openldap/var/run/slapd.args
 
#######################################################################
# BDB database definitions
#######################################################################
 
database  bdb
suffix             "dc=example,dc=com"
rootdn            "cn=Manager,dc=example,dc=com"
# Cleartext passwords, especially for the rootdn, should
# be avoid.  See slappasswd(8) and slapd.conf(5) for details.
# Use of strong authentication encouraged.
rootpw           secret
# The database directory MUST exist prior to running slapd AND 
# should only be accessible by the slapd and slap tools.
# Mode 700 recommended.
directory /usr/local/openldap/var/openldap-data
# Indices to maintain
index       objectClass     eq

 

配置文件没什么好解释的了吧,主要是我配置了一个数据库"dc=cz8,dc=net",如果需要,还可以配置多个数据库,每个都是以database开始的。具体的方法看admin guide。(一般说来,一个公司用一个数据库)

 

 可以启动ldap服务了!


# cd /usr/local/openldap/libexec
    # ./slapd

  接下来的事情就是向数据库添加数据。ldap不支持sql,所以要用ldapadd这个程序来添加,添加的时候要用一个ldif文件,把要添加的东西写在里面,ldif的格式在admin guide里面有说明,我在这里只是简要说一下。

 

首先要添加根,这一步是必要的,不然任何数据都添加不进去。我们编辑一个test.ldif文件:

dn: dc=example,dc=com
objectClass: dcObject
objectClass: organization
dc: example
o: Example Company
 
dn: cn=Manager,dc=example,dc=com
objectClass: organizationalRole
objectClass: top
cn: Manager

执行命令:

# ldapadd -x -D "cn=manager, dc=example,dc=com" -w secret -f test.ldif


导入组织信息和组织角色 

我在执行此命令的时候,出错:ldapadd: invalid option -x,把-x去掉就可以了。

好了,用JXplorer进入就可以管理我们的openLdap。