http://zhaoshijie.iteye.com/blog/819382
1.安装OpenSSL,安装路径 默认 : /usr/local/ ssl
tar -zxvf openssl-1.0.0d.tar.gz
cd openssl-1.0.0d
./Configure
make
make install
2.安装BerkeleyDB,安装路径默认: /usr/local/ BerkeleyDB.5.1
tar -zxvf db-5.1.25.tar.gz
cd db-5.1.25
cd build_unix
../dist/configure
make
make install
安装完成后要将该软件的库路径/usr/local/BerkeleyDB.5.1/lib加入到/etc/ld.so.conf中,然后执行ldconfig使配置文件生效这样在编译openldap时候才能找到该库文件。ld.so.conf是系统动态链接库的配置文件,此文件中包含了可被Linux共享的动态链接库所在目录的名字(系统目录/lib,/usr/lib除外),各个目录之间以空格或者冒号或者逗号隔开。一般的Linux发行版中都含有/usr/X11R6/lib这个共享库,这是X Window窗口系统的动态链接库所在目录。ldconfig是他的管理命令。
如果你不按照上面的做法,也没有关系,只要把/usr/local/BerkeleyDB.4.5下面lib, include目录下面的所有文件,手动拷贝到/usr/lib和/usr/include目录下面就可以了.作用和前面修改配置文件相同,目的也是这样在编译openldap时候才能找到该库文件.
使用命令:
cp /usr/local/ BerkeleyDB.4.5/include/* /usr/include
cp /usr/local/ BerkeleyDB.4.5/lib/* /usr/lib
3.安装OpenLDAP 2.4.24 , 安装路径默认 :/usr/local/etc/openldap
tar -zxvf openldap-2.4.24.tgz
cd openldap-2.4.24
export CPPFLAGS="-I/usr/local/BerkeleyDB.5.1/include"
export LDFLAGS="-L/usr/local/lib -L/usr/local/BerkeleyDB.5.1/lib"
export CPPFLAGS="-I/usr/local/ssl/include"
export LDFLAGS="-L/usr/local/ssl/lib"
./configure --with-tls=openssl --enable-dynamic
一 旦你已运行 configure 脚本,那么 configure 脚本输出的最后一行应当是 Please "make depend" to build dependencies
如果不是上面的这行的话,则说明 configure 脚本失败了,你需要参看它的输出来决定是在什么地方出了点问题。除非 configure 完全成功了,否则你不能进入到下一步
===================================================
env
CPPFLAGS="-I/usr/local/BerkeleyDB.5.1/include" LDFLAGS="-L/usr/local/BerkeleyDB.5.1/lib"
CPPFLAGS="-I/usr/local/ssl/include" LDFLAGS="-L/usr/local/ssl/lib"
./configure
说明 : 将 BerkeleyDB.5.1 和 ssl 的 lib 和 include 在编译时临时加入到环境变量中 .
使用./configure --with-tls=openssl --enable-dynamic解决configure: error: MozNSS not found - please specify the
location to the NSPR and NSS header files in CPPFLAGS and the location to the NSPR and NSS libraries in LDFLAGS (if not in the system location)
===================================================
make depend ( 构建依赖关系 )
make
make install
4. openldap 的启动
使用命令 :/usr/local/libexec/slapd
测试是否启动:ldapsearch -x -b '' -s base '(objectclass=*)' namingContexts
显示如下:
# extended LDIF
#
# LDAPv3
# base <> with scope baseObject
# filter: (objectclass=*)
# requesting: namingContexts
#
#
dn:
namingContexts: dc=my-domain,dc=com
# search result
search: 2
result: 0 Success
# numResponses: 2
# numEntries: 1
5. 用ldapadd向其中加入条目
信息的录入有三种方法,一种是手工录入,一种是.ldif文件格式录入,一种是脚本自动录入。我们先从最基础的手工 录入方式开始介绍,了解录入信息的格式。明白了手工录入的格式,其它两种方式都很容易明白。以下是手动录入信息的全过程
创立DN
[root@mm openldap]# ldapadd -x -D "cn=Manager,dc=mydomain,dc=com" -W
Enter LDAP Password:
dn:dc=mydomain,dc=com
objectclass:top
objectclass:dcobject
objectclass:organization
dc:mydomain
o:2012.Inc
adding new entry "dc=mydomain,dc=com"
[root@mm openldap]# ldapadd -x -D "cn=Manager,dc=mydomain,dc=com" -W
Enter LDAP Password:
dn:ou=zongbu,dc=mydomain,dc=com
ou: zongbu
objectclass: organizationalUnit
adding new entry "ou=zongbu,dc=mydomain,dc=com"
[root@mm openldap]# ldapadd -x -D "cn=Manager,dc=mydomain,dc=com" -W
Enter LDAP Password:
dn:ou=kuli,dc=mydomain,dc=com
ou:kuli
objectclass: organizationalUnit
adding new entry "ou=kuli,dc=mydomain,dc=com"
[root@testlfy openldap]# ldapadd -x -D "cn=Manager,dc=mydomain,dc=com" -W
Enter LDAP Password:
dn:ou=mm,dc=mydomain,dc=com
ou:mm
objectclass: organizationalUnit
adding new entry "ou=mm,dc=mydomain,dc=com"
[root@testlfy openldap]# ldapadd -x -D "cn=Manager,dc=mydomain,dc=com" -W
Enter LDAP Password:
dn:cn=lizhiling,ou=mm,dc=mydomain,dc=com
cn:lizhiling
sn:lin
objectclass:inetorgperson
adding new entry "cn=lizhiling,ou=mm,dc=mydomain,dc=com"
[root@testlfy openldap]# ldapadd -x -D "cn=Manager,dc=mydomain,dc=com" -W
Enter LDAP Password:
dn:cn=angelababy,ou=mm,dc=mydomain,dc=com
cn:angelababy
sn:angel
objectclass:inetorgperson
adding new entry "cn=angelababy,ou=mm,dc=mydomain,dc=com"
6. 使用ldapsearch命令查询“dc=mydomain, dc=com”下的所有条目
vigar@vigar-laptop:/usr/local/bin$ sudo ldapsearch -x -b "dc=mydomain,dc=com"
# extended LDIF
#
# LDAPv3
# base <dc=mydomain,dc=com> with scope subtree
# filter: (objectclass=*)
# requesting: ALL#
# mydomain.com
dn: dc=mydomain,dc=com
objectClass: top
objectClass: dcObject
objectClass: organization
dc: mydomain
o: 2012.Inc
# zongbu, mydomain.com
dn: ou=zongbu,dc=mydomain,dc=com
ou: zongbu
objectClass: organizationalUnit
# kuli, mydomain.com
dn: ou=kuli,dc=mydomain,dc=com
ou: kuli
objectClass: organizationalUnit
# mm, mydomain.com
dn: ou=mm,dc=mydomain,dc=com
ou: mm
objectClass: organizationalUnit
# lizhiling, mm, mydomain.com
dn: cn=lizhiling,ou=mm,dc=mydomain,dc=com
cn: lizhiling
sn: lin
objectClass: inetOrgPerson
# angelababy, mm, mydomain.com
dn: cn=angelababy,ou=mm,dc=mydomain,dc=com
cn: angelababy
sn: angel
objectClass: inetOrgPerson
# search result
search: 2
result: 0 Success
# numResponses: 7
# numEntries: 6
7.在其它client端上用ldapBrowser连接, 先配置一个cfg文件,文件内容, 其中标红处要与ldap server上的slapd.conf中的内容对应
################################# # LDAP Browser v2.8 config file # ################################# basedn=dc=mydomain,dc=com port=389 managerlogin=yes managereferrals=no limit=0 derefaliases=always sslport=636 version=3 timeout=0 password=bugaosuni host=10.0.2.8 managerdn=cn=Manager,dc=mydomain,dc=com
连接效果如下
参考资料
1. http://blog.csdn.net/njchenyi/article/details/2051293
2. iPlanet Directory Server示例
http://docs.oracle.com/cd/E19199-01/816-6696-10/cmdline.html#14439
bash-3.2$ ldapsearch -h 10.0.32.13 -p 389 -D "uid=admin,ou=Administrators,ou=TopologyManagement,o=NetscapeRoot" -w admin -b "ou=agent_section,ou=333,ou=885,ou=10.0.2.3,ou=invoker_RT,ou=ini,ou=2b,o=NetscapeRoot" -s sub "objectclass=*" ou=agent_section,ou=333,ou=885, ou=10.0.2.3, ou=invoker_RT, ou=ini, ou=2b, o=NetscapeRoot ou=agent_section objectClass=top $daemon_cmd=perl mm.pl