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。