OpenLDAP学习笔记

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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等。

这些⼯具可帮助我们⽅便维护⽬录服务器上的数据。

这些⼯具各有优缺点,下⾯简要介绍⼀下,详细的内容可参考相关的官⽅⽹站。

相关文档
最新文档