OpenLDAP学习笔记
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
OpenLDAP学习笔记
LDAP(轻量级⽬录服务访问协议,Lightweight Directory Access Protocol)基于X.500标准,⽀持TCP/IP,使⽤简单⽅便。
现在越来越多的⽹络应⽤系统都⽀持LDAP。
OpenLDAP是LDAP的⼀种开源实现,本笔记基于OpenLDAP2.1.29。
2.1. 源码安装
我的安装⽅法是以源码编译的⽅式进⾏的,以root⽤户进⾏安装。
安装所需软件如下:
具体的安装步骤如下:
1. 由于openldap需要Berkeley DB来存放数据,所以需先安装Berkeley DB 4.
2.52,可到它的⽹站下载,⽹址见上⾯。
运⾏下⾯的命令解
压:
# tar -zxvf db-4.2.52.tar.gz
解完压后,会⽣成⼀个db-4.2.52⽬录,进⾏该⽬录下的build_unix⽬录。
执⾏以下命令进⾏配置安装。
# ../dist/configure
# make
# make install
也是按linux源码安装的三步曲完成,没有什么好说的了。
该软件默认是安装在/usr/local/BerkeleyDB.4.2⽬录下。
安装完成后,要把/usr/local/BerkeleyDB.4.2/lib的库路径加到/etc/ld.so.conf⽂件内,添加完成后执⾏⼀次ldconfig,使配置⽂件⽣效。
这样编译openldap时才能找到相应的库⽂件。
这样资料库就安装完成了,接下来可以安装openldap了。
ld.so.conf是什么东西?它就是系统动态链接库的配置⽂件。
此⽂件内,存放着可被LINUX共享的动态链接库所在⽬录的名字(系统⽬录/lib, /usr/lib除外),各个⽬录名间以空⽩字符(空格,换⾏等)或冒号或逗号分隔。
⼀般的LINUX发⾏版中,此⽂件均含⼀个共享⽬录/usr /X11R6/lib,为X window窗⼝系统的动态链接库所在的⽬录。
ldconfig是它的管理命令,具体操作⽅法可查询man⼿册,这⾥就不细讲了。
2. 到openldap官⽅⽹站下载最新的稳定版源码,并解压。
查看INSTALLT 和README⽂档,这个很重要,因为安装⽅法和⼀些注意事项
都在⾥⾯有介绍。
认真弄明⽩⽂档内容能节省你不少的安装调试时间。
这也是开源软件的⼀个特点,给⽤户提供了最⼤的灵活性和可配置性。
但也增加了系统安装配置的难度,需要有相关的⽂档配置说明和指导。
在官⽅⽹站上还有详细的帮助⽂件,在整个系统配置中需要经常查询。
# tar -zxvf openldap-stable-20040329.tgz
解压完成后,会⽣成⼀个openldap-2.1.29⽬录。
进⾏该⽬录,执⾏以下命令进⾏配置安装。
# env CPPFLAGS="-I/usr/local/BerkeleyDB.4.2/include"
LDFLAGS="-L/usr/local/BerkeleyDB.4.2/lib" ./configure --prefix=/usr/local/openldap
--enable-ldbm
注意以上配置语句,要设置资料库的include和lib路径,否则在配置到资料库相关内容时会提⽰Berkeley DB版本不兼容,并中断配置。
如果没有--enable-ldbm选项,在make test时会提⽰ldbm找不到。
为了减少出错,还是加上为好。
#make depens
#make
#make test
在make test阶段要花费较长时间进⾏测试,好像有16项吧。
你可以放松⼀下,上上⽹,聊聊天,听听歌,呵呵,开玩笑了,这个时间应该是最紧张的了。
成与不成就看这下的了,如果没问题就可安装了。
#make install
通过配置命令可以看出,我们把openldap安装到/usr/local/openldap⽬录下。
建议以源码安装的软件都放到独⽴的⽬录下,不要放到软件默认的⽬录。
好处是⽅便管理和控制,所有⽂件在统⼀的⽬录下,卸载软件只要删除整个⽬录就可以了。
3. 安装完相关软件后就可以着⼿配置了。
Berkeley DB资料库没什么好配置的。
主要是配置openldap 服务。
配置⽂件在软件的安装⽬录
的etc/openldap下,有四个⽂件,主要的是slapd.conf and ldap.conf,其它两个是backup⽂件。
⾸先,我们先来配置slapd.conf⽂档。
系统默认的slapd.conf⽂件如下:
# $OpenLDAP: pkg/ldap/servers/slapd/slapd.conf,v 1.23.2.8 2003/05/24 23:19:14 kurt Exp $
#
# 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
#设置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://
pidfile /usr/local/openldap/var/slapd.pid
#设置pid和args⽂档位置
argsfile /usr/local/openldap/var/slapd.args
# Load dynamic backend modules:
# modulepath /usr/local/openldap/libexec/openldap
# moduleload back_
# moduleload back_
# moduleload back_
# moduleload back_
# moduleload back_
# Sample security restrictions
# Require integrity protection (prevent hijacking)
# Require 112-bit (3DES or better) encryption for updates
# Require 63-bit encryption for simple bind
# security ssf=1 update_ssf=112 simple_bind=64
# Sample access control policy:
# Root DSE: allow anyone to read it
# Subschema (sub)entry DSE: allow anyone to read it
# Other DSEs:
# Subschema (sub)entry DSE: allow anyone to read it
# Other DSEs:
# Allow self write access
# Allow authenticated users read access
# Allow anonymous users to authenticate
# Directives needed to implement policy:
# access to dn.base="" by * read
# access to dn.base="cn=Subschema" by * read
# access to *
# by self write
# by users read
# by anonymous auth
#
# if no access controls are present, the default policy is:
# Allow read by all
#
# rootdn can always write!
#######################################################################
# ldbm database definitions
#######################################################################
database bdb
#设置使⽤的资料库,也可⽤lbdm。
suffix "dc=my-domain,dc=com"
#设置⽬录后缀
rootdn "cn=Manager,dc=my-domain,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
#设置管理密码,这⾥⽤了明⽂的“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
#设置⽬录项索引
要服务器正常动作,要修改⼀些始初参数和设置,修改后的配置⽂档如下:
# $OpenLDAP: pkg/ldap/servers/slapd/slapd.conf,v 1.23.2.8 2003/05/24 23:19:14 kurt Exp $
#
# 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/corba.schema
include /usr/local/openldap/etc/openldap/schema/cosine.schema
include /usr/local/openldap/etc/openldap/schema/inetorgperson.schema
include /usr/local/openldap/etc/openldap/schema/misc.schema
include /usr/local/openldap/etc/openldap/schema/openldap.schema
include /usr/local/openldap/etc/openldap/schema/nis.schema
include /usr/local/openldap/etc/openldap/schema/samba.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://
pidfile /usr/local/openldap/var/slapd.pid
argsfile /usr/local/openldap/var/slapd.args
loglevel 1
#增加了⽇志功能,需修改syslog配置⽂件,在⽂件中增加⼀项:local4.* /var/log/ldap.log⽇志级别定义可查相官⽅⽹站的⽂档。
#1级记录的信息很多,可⽤于调试。
# Load dynamic backend modules:
# modulepath /usr/local/openldap/libexec/openldap
# moduleload back_
# moduleload back_
# moduleload back_
# moduleload back_
# moduleload back_
# Sample security restrictions
# Require integrity protection (prevent hijacking)
# Require 112-bit (3DES or better) encryption for updates
# Require 63-bit encryption for simple bind
# security ssf=1 update_ssf=112 simple_bind=64
# Sample access control policy:
# Root DSE: allow anyone to read it
# Subschema (sub)entry DSE: allow anyone to read it
# Other DSEs:
# Allow self write access
# Allow authenticated users read access
# Allow anonymous users to authenticate
# Directives needed to implement policy:
# access to dn.base="" by * read
# access to dn.base="cn=Subschema" by * read
# access to *
# by self write
# by users read
# by anonymous auth
#
# if no access controls are present, the default policy is:
# Allow read by all
#
# rootdn can always write!
#######################################################################
# ldbm database definitions
#######################################################################
database bdb
suffix "dc=it,dc=com"
#改成你⾃已的⽬录后缀,
rootdn "cn=root,dc=it,dc=com"
#设置root为管理员,与linux的root没有什么关系。
# Cleartext passwords, especially for the rootdn, should
# be avoid. See slappasswd(8) and slapd.conf(5) for details.
# Use of strong authentication encouraged.
rootpw {MD5}mjkiuPt0wXhpxxkdiOOO+0000000AKq0by
#设置root密码,⽤MD5加密。
密码串⽤slappasswd -h {MD5}指令⽣成
# 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
#这⾥可根据你的需要设置相关索引,以加快查询速度。
具体内容可查询官⽅⽹站管理⼿册。
#ACL configure以下内容定义访问控制
access to attr=userPassworduserPassword
#只能由⾃已修改,有效验证⽤户查询。
by self write
by anonymous auth
access to attr=mail
by dn="cn=root,dc=it,dc=tigerhead" writemail
#只能由⾃已修改,有效验证⽤户查询。
by self write
by anonymous auth
access to dn=".*,dc=it,dc=tigerhead"
#允许所有⼈查询没受控制访问限制的信息。
by self write
by * read
到现在为⽌,服务器基本就配置完成了,可以启动了,服务器程序是位于安装⽬录的libexec下的slapd程序。
注意,不是 sldap哦。
ok,到现在为⽌,服务器基本就配置完成了,可以启动了,服务器程序是位于安装⽬录的libexec下的slapd程序。
注意,不是 sldap 哦。
启动服务器执⾏以下命令:
# ./slapd
如果没有提⽰什么出错信息,直接返回shell状态,就说明服务器正常启动了,你可以查询⽇志或⽤ps -aux查看。
或⽤以下命令查询服务器:
ldapsearch -x -b '' -s base '(objectclass=*)' namingContexts
如果命令执⾏成功,返回⼀些信息,则说明服务器正常运⾏了。
如果启动不成功,它会提⽰⼀些出错信息,多数是slapd.conf配置出错。
回头仔细核查⼀下配置⽂档。
4. 客户端配置⽂档是ldap.conf。
该⽂档相当简单,其实不⽤配置也能正常操作。
# $OpenLDAP: pkg/ldap/libraries/libldap/ldap.conf,v 1.9 2000/09/04 19:57:01 kurt Exp $
#
# LDAP Defaults
#
# See ldap.conf(5) for details
# This file should be world readable but not world writable.
BASE dc=it, dc=com设置⽬录起点
#URI ldap:// ldap://:666
#SIZELIMIT 12
#TIMELIMIT 15
#DEREF never。
安装⽅法也很简单,只要解压出来,拷贝到apache的web⽬录下,按说明配置⼀下设定⽂档,就ok了。
下载。
安装⽅法见我写的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的密码。
开源的⽬录服务管理⼯具有很多,包括phpldapadmin,gq,CPU,JXplore等。
这些⼯具可帮助我们⽅便维护⽬录服务器上的数据。
这些⼯具各有优缺点,下⾯简要介绍⼀下,详细的内容可参考相关的官⽅⽹站。