2.2.2. 文件方式
.ldif文件方式也就是把以上手工输入的内容先写入一个.ldif文件中,然后,用ldapadd命令的-f参数导入。
# ldapadd -x -D "cn=root,dc=it,dc=com" -W -f test.ldif
一个完整的global.ldif文件例子:
dn: dc=info, dc=net
objectClass: top
objectClass: organization
o: info.net
dn: ou=People, dc=info, dc=net
objectClass: top
objectClass: organizationalUnit
ou: People
description: User Info
dn: cn=Admin, dc=info, dc=net
objectClass: top
objectClass: person
objectClass: organizationalPerson
cn: Admin
sn: Admin
userPassword: Admin
description: Administrator for info.net
dn: id=1, ou=People, dc=info, dc=net
objectclass: top
objectclass: InfoPerson
id: 1
username: 张三
tel:021-63138990
card_id:ABC001
我们也可用slapadd命令来导入数据。该命令可以导入包含一些系统信息的ldif文件,如:
dn: dc=it,dc=com
objectClass: top
objectClass: dcObject
objectClass: organization
dc: it
structuralObjectClass: organization
entryUUID: d97b06da-d77e-1028-9866-d4ec7ac00d12
creatorsName: cn=anonymous #系统信息
createTimestamp: 20041201005115Z #系统信息
o:: 5bm/5bee5biC6JmO5aS055S15rGg6ZuG5Zui5pyJ6ZmQ5YWs5Y+4
userPassword:: e01ENX14TXBDT0tDNUk0SU56RkNhYjNXRW13PT0=
entryCSN: 2004120603:50:08Z#0x0001#0#0000 #系统信息
modifiersName: cn=admin,dc=it,dc=com #系统信息
modifyTimestamp: 20041206035008Z #系统信息
[Note]
再次提醒,注意每行后面不要留有空格。
2.2.3. 脚本方式
脚本录入方式需要自已编写脚本,或到网上下载。有一个用PHP写的LDAP管理工具不错,叫phpLDAPadmin。可以到以下网址下载:
http://phpldapadmin.sourceforge.net。安装方法也很简单,只要解压出来,拷贝到apache的web目录下,按说明配置一下设定文档,就ok了。
2.3. 常用命令介绍
接着为大家介绍一下几个常用的ldap命令,如果你用了phpLDAPadmin程序,其实它已经有一个很好的图形介面帮你完成这些命令了。但了解一下还是对你还是很有益的,因为命令方法才是最根本的。
*
删除命令ldapdelete
# ldapdelete -x -D 'cn=root,dc=it,dc=com' -W 'uid=qq1,dc=it,dc=com'
*
重新索引ldap数据库命令slapindex
# slapindex -f slapd.conf
*
设置使用者密码,当然了,你的用户需要有userPassword项了。
#ldappasswd -x -D "cn=root,dc=it,dc=com" -W "uid=qq1,dc=it,dc=com" -S
New password:
Re-enter new password:
Enter bind password:
Result: Success (0)
[Note]
"Enter bind password" 是 "cn=root,dc=it,dc=com"管理员的密码。
*
管理员密码更改
#slappasswd
New password
Re-enter new password
{SSHA}83DJ4KVwqlk1uh9k2uDb8+NT1U4RgkEs
接下再拷贝到 path/to/sldap.conf 的 rootpw 即可,重启使用配置文件生效
*
通过ldapmodify修改目录内容
# ldapmodify -x -D "cn=root,dc=it,dc=com" -W -f modify.ldif
通过ldif文件修改ldap数据,ldif文件格式如下:
dn: cn=qq,dc=it,dc=com
changetype: modify
replace: mail
mail:
modme@example.com
-
add: title
title: Grand Poobah
-
add: jpegPhoto
jpegPhoto:< file:///tmp/modme.jpeg
-
delete: description
-
2.4. 启用sasl验证
前提是你在系统中安装了sasl认证库,并在编译openldap时支持它,默认就支持了。到
http://asg.web.cmu.edu/cyrus下载。安装方法见我写的sendmail安装笔记。安装好之后,需要在sasl中建立相应的帐号,用以下命令可完成。
# saslpasswd2 -c test
接着配置slapd.conf文件,加入以下内容。
sasl-regexp
uid=(.*),cn=.*,cn=auth
uid=$1,dc=it,dc=com
重启服务器使配置文件生效。这个配置是最大权限的配置,如果要细化请查阅相关文档。用以下命令测试。
# ldapsearch -U qq -b 'uid=qq,dc=it,dc=com' -D 'dc=it,dc=com' -Y DIGEST-MD5
采用digest-md5验证,提示密码,输入saslpasswd2的密码。
2.5. 配置服务器复制
在一些关键的应用场合,我们需设置多个ldap服务器实例,且数据要保持同步。当一台服务器出现故障或被黑客攻击时,我们就能继续保持应用的正常运行。通过DNS的轮流查询功能,还能实现服务器的负载均衡,提高响应速度。在openldap中有一个slurpd进程,利用slurpd进程可帮助我们实现多台ldap服务器数据的同步功能。下面简单介绍一下主、从ldap服务器的配置。
slurpd运行在主服务器上,它能把主服务器上的变化通过LDAP协议传送到从服务器上。从服务器上的变化不能传送到主服务器上,也就是说是单向同步的。主从服务器的版本最好一样,以减少兼容性问题。主从服务器的安装方法是一样的,关键是配置文件有所不同。我的操作系统是debian sarge,在确保主从服务器能正常运行的前提下进行以下配置:
*
首先,把主从服务器关闭。通过以下三步操作静态同步主从服务器上的数据:
1.
把主服务器上/var/lib/ldap目录下的所有数据库文件全部拷贝到从服务器的同目录中,覆盖原有文件。
2.
把主服务器上的/etc/ldap/schema目录下的所有schema文件拷贝到从服务器的同目录中,覆盖原有文件。
3.
把主服务器上/etc/ldap/slapd.conf文件拷贝到从服务器的同目录中,覆盖原有文件。
*
配置主服务器上的slapd.conf文件,取消replogfile指令前的注释符号,取消后的结果如下:
# Where to store the replica logs for database #1
replogfile /var/lib/ldap/replog
增加replica指令,如:
#replace config
replica uri=ldap://192.168.6.195:389 #指定从服务器主机名和端口号
binddn="cn=admin,dc=com" #指定需同步的DN的管理员
bindmethod=simple credentials=1 #指定验证方式和需同步的DN的管理员密码
*
配置从服务器上的slapd.conf文件,增加updatedn指令,如:
updatedn "cn=admin,dc=com" #与主服务器的binddn对应
在从服务器的配置文件中,不要包含replica和replogfile指令。
*
先启动主服务器的slapd和slurpd,再启动从服务器的slapd。
配置完成后,我们可测试一下,在主服务器上修改一个目录项,在从服务器上可查看目录项的数据已同步。
Chapter 3. 管理工具
Table of Contents
3.1. phpldapadmin
3.2. gq
3.3. CPU
3.4. JXplore
3.5. LAM
开源的目录服务管理工具有很多,包括phpldapadmin,gq,CPU,JXplore等。这些工具可帮助我们方便维护目录服务器上的数据。这些工具各有优缺点,下面简要介绍一下,详细的内容可参考相关的官方网站。
3.1. phpldapadmin
3.2. gq
3.3. CPU
3.4. JXplore
3.5. LAM
官方网站:
http://lam.sourceforge.net/index.htm
Chapter 4. HowTo
Table of Contents
4.1. 禁止整个服务器的匿名访问
4.1. 禁止整个服务器的匿名访问
在slapd.conf配置文件中加入disallow bind_anon即可。