OPENLDAP安装、配置

来源:互联网 发布:java main函数 启动 编辑:程序博客网 时间:2024/05/15 07:36
环境:centos 5
openldap介绍:
  OpenLDAP是轻型目录访问协议(Lightweight Directory Access Protocol,LDAP)的自由和开源的实现,在其OpenLDAP许可证下发行,并已经被包含在众多流行的Linux发行版中。
  它主要包括下述4个部分:
  slapd - 独立LDAP守护服务
  slurpd - 独立的LDAP更新复制守护服务
  实现LDAP协议的库
  工具软件和示例客户端
LDAP库概念:
dn :一条记录的位置
dc :一条记录所属区域
ou :一条记录所属组织
cn/uid:一条记录的名字/ID
                        eucita.cn
                        /       \
                    xiaoshou    jishu
                     /   \       /  \
                  qiye zhengfu app  BDP
                               / \    \
                              JS CS   user1
dc = eucita.cn
ou=xiaoshou、jishu
ou=qiye、zhengfu、app、BDP
cn=JS、CS、user1
dn:cn=用户,ou=子部门,ou=部门,dc=eucita,dc=cn
OPENLDAP其实就是一个树型结构,根>>树干分叉>>树枝分叉>>果实,也就是用户,部门,单位。(其实跟国外的门牌号表示法是一样的)


安装:

1、yum安装oepnldap、openldap-servers、openldap-clients

[root@hao-linux ~]#yum -y install openldap openldap-servers openldap-clients

2、查看openldap安装

[root@hao-linux ~]#rpm -qa|grep openldap

3、复制DB_CONFIG.example到/var/lib/ldap/下并改名为DB_CONFIG。

[root@hao-linux ~]#cp /etc/openldap/DB_CONFIG.example /var/lib/ldap/DB_CONFIG

4、设置slapd.conf文件

[root@hao-linux ~]#vim /etc/openldap/slapd.conf 
   修改suffix、rootdn、rootpw为自己设定的参数:

suffix "dc=eucita,dc=cn"rootdn "cn=admin,dc=eucita,dc=cn"rootpw secret     #管理员的密码默认被注释,需删除注释。

suffix设定的是单位(根),rootdn设定的是LDAP的管理员,rootpw设定的是LDAP管理员的密码。
管理员密码有明文与加密两种,明文直接修改就好了。
管理员加密密码设定方式:

[root@hao-linux ~]# slappasswdNew password: Re-enter new password: {SSHA}obu6Qmo1rPIcJBh+dqHvFEY9TE2aV1Ti
接下来把{SSHA}obu6Qmo1rPIcJBh+dqHvFEY9TE2aV1Ti复制到/etc/openldap/slapd.conf文件文件中的rootpw后替换secret就行了。

5、录入信息档案,一般记录信息的档案格式为*.ldif。

[root@hao-linux ~]# vim dc.ldif
dn: dc=eucita,dc=cndc: eucitaobjectClass: dcObjectobjectClass: organizationalUnitou: eucita.cn
使用slapadd新增:

[root@hao-linux ~]# slapadd -v -l dc.ldif

新增成功:added: "dc=eucita,dc=cn" (00000001)


编写ou.ldif:

[root@hao-linux ~]# vim ou.ldif

#jishu topdn: ou=jishu,dc=eucita,dc=cnou: jishuobjectClass: organizationalUnit#xiaoshou topdn: ou=xiaoshou,dc=eucita,dc=cnou: xiaoshouobjectClass: organizationalUnit#qiye>xiaoshoudn: ou=qiye,ou=xiaoshou,dc=eucita,dc=cnou: qiyeobjectClass: organizationalUnit

注:每一笔新的记录与前一笔记录要使用一行空白来隔开表示、区分。

    每一笔新记录开头必须要用dn的完整值表示。

使用slapadd录入:

[root@hao-linux ~]# slapadd -v -l ou.ldif 
added: "ou=jishu,dc=eucita,dc=cn" (00000002)added: "ou=xiaoshou,dc=eucita,dc=cn" (00000003)added: "ou=qiye,ou=xiaoshou,dc=eucita,dc=cn" (00000004)
成功!

6、更改/var/lib/ldap权限

[root@hao-linux lib]# chown -R ldap.ldap /var/lib/ldap/
如不赋权启动是会出现错误:

/var/lib/ldap/dn2id.bdb is not owned by "ldap"             [警告]
/var/lib/ldap/__db.004 is not owned by "ldap"              [警告]
/var/lib/ldap/id2entry.bdb is not owned by "ldap"          [警告]
/var/lib/ldap/__db.001 is not owned by "ldap"              [警告]
/var/lib/ldap/__db.006 is not owned by "ldap"              [警告]
/var/lib/ldap/__db.002 is not owned by "ldap"              [警告]
/var/lib/ldap/ou.bdb is not owned by "ldap"                [警告]
/var/lib/ldap/objectClass.bdb is not owned by "ldap"       [警告]
/var/lib/ldap/__db.005 is not owned by "ldap"              [警告]
/var/lib/ldap/__db.003 is not owned by "ldap"              [警告]
启动 slapd:                                               [确定]

7、启动ldap服务:

[root@hao-linux lib]# service ldap start

8、查看ldap资料库:

[root@hao-linux lib]# ldapsearch -x -b "dc=eucita,dc=cn"
# extended LDIF
#
# LDAPv3
# base <dc=eucita,dc=cn> with scope subtree
# filter: (objectclass=*)
# requesting: ALL
## extended LDIF
#
# LDAPv3
# base <dc=eucita,dc=cn> with scope subtree
# filter: (objectclass=*)
# requesting: ALL
#

# eucita.cn
dn: dc=eucita,dc=cn
dc: eucita
objectClass: dcObject
objectClass: organizationalUnit
ou: eucita.cn

# jishu, eucita.cn
dn: ou=jishu,dc=eucita,dc=cn
ou: jishu
objectClass: organizationalUnit

# xiaoshou, eucita.cn
dn: ou=xiaoshou,dc=eucita,dc=cn
ou: xiaoshou
objectClass: organizationalUnit

# qiye, xiaoshou, eucita.cn
dn: ou=qiye,ou=xiaoshou,dc=eucita,dc=cn
ou: qiye
objectClass: organizationalUnit

# search result
search: 2
result: 0 Success

# numResponses: 5
# numEntries: 4

9、新建user.ldif

[root@hao-linux ~]# vim user.ldif
dn: cn=wei.xu,ou=jishu,dc=eucita,dc=cncn: wei.xusn: N/Aobjectclass: personobjectclass: inetOrgPersongivenName: cnmail: @eucita.cntelephoneNumber: 010-52026890postalAddress: N/ApostalCode: 100020ou: jishuo: eucita techlabeledURI: http://www.eucita.com/title: csuserPassword: secret
录入user.ldif到ldap:

ldapmodify -D "cn=admin,dc=eucita,dc=cn" -w secret  -x -a -f user.ldif
adding new entry "cn=wei.xu,ou=jishu,dc=eucita,dc=cn"

成功!


后记:录入资料命令有两种:一种为:slapadd 另一种为:ldapadd 前者在未启动ldap服务时使用,后者在已启动ldap服务时使用。

具体命令参数:

OpenLDAP目录讲解:topldap的安装目录:/usr/local/topldapOpenLDAP目录讲解:topldap的安装目录:/usr/local/topldap|-slapd 目录服务的主要程序|-slurpd 目录服务进行复制的程序|-slapadd 向目录中添加数据|-slapcat 把目录中的条目导出成ldif文件|-slapindex 重建目录的索引|-ldapcompare 对目录的条目的属性进行比较|-ldapadd 向目录服务中添加条目|-ldapdelete 删除目录中的条目|-ldapmodify 更新目录中条目的值|-ldapmodrdn 更改条目的DN|-ldappasswd 更改条目的密码|-ldapsearch 对目录进行查询|—include 目录服务的c的.h文件|—lib 目录服务的c的连接文件|—man 说明文档|—topldap-data 存放目录所存储的数据|—topldap-slurpd 存放目录进行复制时文件|—topldap|-slapd.conf 目录服务服务器端主要的配置文件|-ldap.conf 客户端的配置文件启动目录服务:/usr/local/topldap/slapd -d 256停止服务:/usr/local/topldap/stopslapd、如果在debug模式,按下Ctrl+c终止服务就行了启动目录的复制服务/usr/local/topldap/slurpd -d 4配置文件:/usr/local/topldap/topldap/slapd.conf常用命令介绍slapd4 使用IPv4标准6 使用IPv6标准-d debug模式 一般用 -1,1,256-f 指定配置文件的路径-h 可以指定启动服务的端口 ldap://:2004 用2004端口启动服务slurpd-d debug模式 一般用4-f 指定配置文件-r 指定复制ldapadd-x 进行简单认证-D 用来绑定服务器的DN-h 目录服务的地址-w 绑定DN的密码-f 使用ldif文件进行条目添加的文件例子 ldapadd -x -D “cn=root,dc=starxing,dc=com” -w secret -f /root/test.ldifldapadd -x -D “cn=root,dc=starxing,dc=com” -w secret (这样写就是在命令行添加条目)ldapsearch-x 进行简单认证-D 用来绑定服务器的DN-w 绑定DN的密码-b 指定要查询的根节点-H 制定要查询的服务器ldapsearch -x -D “cn=root,dc=starxing,dc=com” -w secret -b “dc=starxing,dc=com”使用简单认证,用 “cn=root,dc=starxing,dc=com” 进行绑定,要查询的根是 “dc=starxing,dc=com”.这样会把绑定的用户能访问”dc=starxing,dc=com”下的所有数据显示出来.ldapdelete参数和ldapadd差不多,就不写了ldapdelete -x -D ‘cn=root,dc=it,dc=com’ -w secert ‘uid=zyx,dc=it,dc=com’这样就可以删除’uid=zyx,dc=it,dc=com’记录了,应该注意一点,如果o或ou中有成员是不能删除的.ldappasswd-x 进行简单认证-D 用来绑定服务器的DN-w 绑定DN的密码-S 提示的输入密码-s pass 把密码设置为pass-a pass 设置old passwd为pass-A 提示的设置old passwd-H 是指要绑定的服务器-I 使用sasl会话方式#ldappasswd -x -D ‘cm=root,dc=it,dc=com’ -w secret ‘uid=zyx,dc=it,dc=com’ -SNew password:Re-enter new password:就可以更改密码了,如果原来记录中没有密码,将会自动生成一个userPassword.ldapmodify-a 添加新的条目.缺省的是修改存在的条目.-C 自动追踪引用.-c 出错后继续执行程序并不中止.缺省情况下出错的立即停止.比如如果你的ldif 文件内的某个条目在数据库内并不存在,缺省情况下程序立即退出,但如果使用了该参数,程序忽略该错误继续执行.-n 用于调试到服务器的通讯.但并不实际执行搜索.服务器关闭时,返回错误;服务器打开时,常和-v 参数一起测试到服务器是否是一条通路.-v 运行在详细模块.在标准输出中打出一些比较详细的信息.比如:连接到服务器的ip 地址和端口号等.-M[M] 打开manage DSA IT 控制. -MM 把该控制设置为重要的.-f file 从文件内读取条目的修改信息而不是从标准输入读取.-x 使用简单认证.-D binddn 指定搜索的用户名(一般为一dn 值).-W 指定了该参数,系统将弹出一提示入用户的密码.它和-w 参数相对使用.-w bindpasswd 直接指定用户的密码. 它和-W 参数相对使用.-H ldapuri 指定连接到服务器uri(ip 地址和端口号,常见格式为ldap://hostname:port).如果使用了-H 就不能使用-h 和-p 参数.-h ldaphost 指定要连接的主机的名称/ip 地址.它和-p 一起使用.-p ldapport 指定要连接目录服务器的端口号.它和-h 一起使用.如果使用了-h 和-p 参数就不能使用-H 参数.-Z[Z] 使用StartTLS 扩展操作.如果使用-ZZ,命令强制使用StartTLS 握手成功.-V 启用证书认证功能,目录服务器使用客户端证书进行身份验证,必须与-ZZ 强制启用TLS 方式配合使用,并且匿名绑定到目录服务器.-e 设置客户端证书文件,例: -e cert/client.crt-E 设置客户端证书私钥文件,例: -E cert/client.key#ldapmodify -x -D “cn=root,dc=it,dc=com” -W -f modify.ldif将modify.ldif中的记录更新原有的记录

转贴请注明出处:http://blog.csdn.net/chinese_tiger/article/details/7740837

原创粉丝点击