??xml version="1.0" encoding="utf-8" standalone="yes"?>成人欧美亚洲,欧美视频一区二区三区在线观看,91精品一区国产高清在线gifhttp://www.aygfsteel.com/mycolby/articles/282870.html剑秋剑秋Wed, 17 Jun 2009 08:48:00 GMThttp://www.aygfsteel.com/mycolby/articles/282870.htmlhttp://www.aygfsteel.com/mycolby/comments/282870.htmlhttp://www.aygfsteel.com/mycolby/articles/282870.html#Feedback0http://www.aygfsteel.com/mycolby/comments/commentRss/282870.htmlhttp://www.aygfsteel.com/mycolby/services/trackbacks/282870.html

OpenLDAP学习W记

发布旉:2004q?4?7?/p>

最q更?2005q?8?8?/p>

Abstract

LDAP(轻量U目录服务访问协议,Lightweight Directory Access Protocol)ZX.500标准Q支持TCP/IPQ用简单方ѝ现在越来越多的|络应用pȝ都支持LDAP。OpenLDAP是LDAP的一U开源实玎ͼ本笔记基于OpenLDAP2.1.29?/p>


Chapter 1. 目录服务?/h2>

目录是一个ؓ查询、浏览和搜烦而优化的专业分布式数据库Q它成树状结构组l数据,好象Linux/Unixpȝ中的文g目录一栗目录数据库和关pL据库不同Q它有优异的L能Q但写性能差,q且没有事务处理、回滚等复杂功能Q不适于存储修改频繁的数据。所以目录天生是用来查询的,好象它的名字一栗目录服务是q录数据库和一套访问协议组成的pȝ。类g下的信息适合储存在目录中Q?/p>

  • 企业员工和企业客户之cMh员信息;

  • 公用证书和安全密钥;

  • 邮g地址、网址、IP{电脑信息;

  • 电脑配置信息?/p>

  • ...

1.1. X.500和LDAP

现在国际上的目录服务标准有两个,一个是较早的X.500标准Q一个是较新的LDAP标准?/p>

  • X.500是一个协议族Q由一pd的概念和协议l成Q包括:

    • X.501是模型定义,定义目录服务的基本模型和概念Q?/p>

    • X.509是认证框Ӟ定义如何处理目录服务中客户和服务器认证;

    • X.511是抽象服务定义,定义X.500提供的功能性服务;

    • X.518是分布式操作q程定义Q定义如何跨q_处理目录服务Q?/p>

    • X.519是协议规范,定义了X.500协议Q包括DAP(Directory Access ProtocolQ目录访问协?、DSP(Directory System ProtocolQ目录系l协?、DOP(Directory Operator ProtocolQ目录操作绑定协?、DISP(Directory Information Shadowing ProtocolQ目录信息阴影协?)Q?/p>

    • X.520定义属性类型要求;

    • X.521定义对象cdQ?/p>

    • X.525定义如果在目录服务器间复制内宏V?/p>

    X.500标准中定义了很多内容Q包括:

    • 定义了信息模型,定目录中信息的格式和字W集Q如何在中表示目录信息(定义对象cR属性等模式)Q?/p>

    • 定义命名I间Q确定对信息q行的组l和引用Q如何组l和命名?目录信息树DIT和层ơ命名模型;

    • 定义功能模型Q确定可以在信息上执行的操作Q?/p>

    • 定义认证框架Q保证目录中信息的安全,如何实现目录中信息的授权保护-讉K控制模型Q?/p>

    • 定义分布操作模型Q确定数据如何分布和如何对分布数据执行操作,如何全局目录树划分ؓ理域,以便理?/p>

    • 定义客户端与服务器之间的通信的各U协议?/p>

    ׃X.500较复杂,且需严格늅OSI七层协议模型。造成应用开发较困难。所以开发了LDAPQ以便在INTERNET上用?/p>

  • LDAP协议?993q获批准Q生LDAPv1版,1997q发布最新的LDAPv3版,该版本是LDAP协议发展的一个里E碑Q它作ؓX.500的简化版提供了很多自有的Ҏ,使LDAP功能更ؓ完备Q具有更强大的生命力?/p>

    LDAP也是一个协议族Q包含以下内容:

    • RFC 2251--LDAPv3核心协议Q定义了LDAPv3协议的基本模型和基本操作Q?/p>

    • RFC 2252--定义LDAPv3基本数据模式(Schema)(包括语法、匹配规则、属性类型和对象c?以及标准的系l数据模式;

    • RFC 2253--定义LDAPv3中的分辩?DN)表达式;

    • RFC 2254--定义了LDAPv3中的qo表达式;

    • RFC 2255--定义LDAPv3l一资源地址的格式;

    • RFC 2256--定义LDAPv3中用X.500的Schema列表Q?/p>

    • RFC 2829--定义了LDAPv3中的认证方式Q?/p>

    • RFC 2830--定义了如何通过扩展使用TLS服务Q?/p>

    • RFC 1823--定义了C的LDAP客户端API开发接口;

    • RFC 2847--定义了LDAP数据导入、导出文件接口LDIF?/p>

    q些协议定义了LDAP的内容,包括Q?/p>

    • 定义了一个信息模型,定了LDAP目录中信息的格式和字W集Q如何表C目录信?定义对象cR属性、匹配规则和语法{模?Q?/p>

    • 定义了命名空_定信息的组l方?-目录树DITQ以DN和RDN为基的命名方式,以及LDAP信息的Internet表示方式Q?/p>

    • 定义了功能模型,定在可以在信息上执行的操作及API?/p>

    • 定义了安全框Ӟ保证目录中信息的安全Q定义匿名、用户名/密码、SASL{多U认证方式,以及与TLSl合的通讯保护框架Q?/p>

    • 定义分布式操作模型,Z指引方式的分布式操作框架Q?/p>

    • 定义了LDAP扩展框架?/p>

1.2. LDAP产品

现在市场上有关LDAP的品已有很多,各大软g公司都在他们的品中集成了LDAP服务Q如Microsoft的ActiveDirectory、Lotus的Domino Directory、IBM的WebSphere中也集成了LDAP服务。LDAP的开源实现是OpenLDAPQ它比商业品一点也不差Q而且源码开放?/p>

Chapter 2. OpenLDAP安装W记

2.1. 源码安装

我的安装Ҏ是以源码~译的方式进行的Q以root用户q行安装。安装所需软g如下Q?/p>

具体的安装步骤如下:

  1. ׃openldap需要Berkeley DB来存放数据,所以需先安装Berkeley DB 4.2.52Q可到它的网站下载,|址见上面。运行下面的命o解压Q?/p>

    # tar -zxvf db-4.2.52.tar.gz
        

    解完压后Q会生成一个db-4.2.52目录,q行该目录下的build_unix目录。执行以下命令进行配|安装?/p>

    # ../dist/configure
        # make
        # make install
        

    也是按linux源码安装的三步曲完成Q没有什么好说的了。该软g默认是安装在/usr/local/BerkeleyDB.4.2目录下。安装完成后Q要?usr/local/BerkeleyDB.4.2/lib的库路径加到/etc/ld.so.conf文g内,d完成后执行一ơldconfigQ配置文g生效。这L译openldap时才能找到相应的库文件。这栯料库安装完成了Q接下来可以安装openldap了。ld.so.conf是什么东西?它就是系l动态链接库的配|文件。此文g?存放着可被LINUX׃n的动态链接库所在目录的名字(pȝ目录/lib,/usr/lib除外)Q各个目录名间以I白字符(I格Q换行等)或冒h逗号分隔。一般的LINUX发行版中Q此文g均含一个共享目?usr/X11R6/libQؓX windowH口pȝ的动态链接库所在的目录?ldconfig是它的管理命令,具体操作Ҏ可查询man手册Q这里就不细讲了?/p>

  2. 到openldap官方|站下蝲最新的E_版源码,q解压。查看INSTALLT 和README文Q这个很重要Q因为安装方法和一些注意事w在里面有介绍。认真弄明白文内容能节省你不少的安装调试时间。这也是开源Y件的一个特点,l用h供了最大的灉|性和可配|性。但也增加了pȝ安装配置的难度,需要有相关的文档配|说明和指导。在官方|站上还有详l的帮助文gQ在整个pȝ配置中需要经常查询?/p>

    # tar -zxvf openldap-stable-20040329.tgz
        

    解压完成后,会生成一个openldap-2.1.29目录。进行该目录Q执行以下命令进行配|安装?/p>

    # env CPPFLAGS="-I/usr/local/BerkeleyDB.4.2/include"
        LDFLAGS="-L/usr/local/BerkeleyDB.4.2/lib" ./configure --prefix=/usr/local/openldap
        --enable-ldbm
        

    注意以上配置语句Q要讄资料库的include和lib路径Q否则在配置到资料库相关内容时会提示Berkeley DB版本不兼容,q中断配|。如果没?-enable-ldbm选项Q在make test时会提示ldbm找不到。ؓ了减出错,q是加上为好?/p>

    #make depens
        #make
        #make test
        

    在make test阶段要花费较长时间进行测试,好像?6吧。你可以放松一下,上上|,聊聊天,听听歌,呵呵Q开玩笑了,q个旉应该是最紧张的了。成与不成就看这下的了,如果没问题就可安装了?/p>

    #make install
        

    通过配置命o可以看出Q我们把openldap安装?usr/local/openldap目录下。徏议以源码安装的Y仉攑ֈ独立的目录下Q不要放到Y仉认的目录。好处是方便理和控Ӟ所有文件在l一的目录下Q卸载Y件只要删除整个目录就可以了?/p>

  3. 安装完相兌Y件后可以着手配|了。Berkeley DB资料库没什么好配置的。主要是配置openldap 服务。配|文件在软g的安装目录的etc/openldap下,有四个文Ӟ主要的是slapd.conf and ldap.confQ其它两个是backup文g。首先,我们先来配置slapd.conf文。系l默认的slapd.conf文g如下Q?/p>

    # $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://root.openldap.org
        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_bdb.la
        # moduleload    back_ldap.la
        # moduleload    back_ldbm.la
        # moduleload    back_passwd.la
        # moduleload    back_shell.la
        # 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
        #讄使用的资料库Q也可用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
        #讄理密码Q这里用了明文的“secret”密码。这栯|不安全Q需使用加密的密码,下面会讲到如何设|加密密码?
        # 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
        #讄目录烦?
        

    要服务器正常动作Q要修改一些始初参数和讄Q修改后的配|文如下:

    # $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.
        #
        #Z有效使用目录服务Q包含相关的文g。注意,在包含文件时是要按一定顺序的Q因?
        #文g里的属性存在依赖关pR如果顺序不对,服务器启动不了,文间的依赖关系在文?
        #中都有说明,请仔l查看一下。如果懒得看也可以按我的序?
        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://root.openldap.org
        pidfile         /usr/local/openldap/var/slapd.pid
        argsfile        /usr/local/openldap/var/slapd.args
        loglevel 1
        #增加了日志功能,需修改syslog配置文gQ在文g中增加一:local4.* /var/log/ldap.log日志U别定义可查相官方网站的文?
        #1U记录的信息很多Q可用于调试?
        # Load dynamic backend modules:
        # modulepath    /usr/local/openldap/libexec/openldap
        # moduleload    back_bdb.la
        # moduleload    back_ldap.la
        # moduleload    back_ldbm.la
        # moduleload    back_passwd.la
        # moduleload    back_shell.la
        # 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"
        #Ҏ你自已的目录后缀Q?
        rootdn          "cn=root,dc=it,dc=com"
        #讄root为管理员Q与linux的root没有什么关pR?
        # 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密码Q用MD5加密。密码串用slappasswd -h {MD5}指o生成
        # 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
        #q里可根据你的需要设|相关烦引,以加快查询速度。具体内容可查询官方|站理手册?
        #ACL configure以下内容定义讉K控制
        access to  attr=userPassworduserPassword
        #只能p已修改,有效验证用户查询?
        by self write
        by anonymous auth
        access to attr=mail
        by dn="cn=root,dc=it,dc=tigerhead" writemail
        #只能p已修改,有效验证用户查询?
        by self write
        by anonymous auth
        access to dn=".*,dc=it,dc=tigerhead"
        #允许所有h查询没受控制讉K限制的信息?
        by self write
        by * read
        

    到现在ؓ止,服务器基本就配置完成了,可以启动了,服务器程序是位于安装目录的libexec下的slapdE序。注意,不是sldap哦。okQ到现在为止Q服务器基本配|完成了Q可以启动了Q服务器E序是位于安装目录的libexec下的slapdE序。注意,不是sldap哦。启动服务器执行以下命oQ?/p>

    # ./slapd
        

    如果没有提示什么出错信息,直接q回shell状态,p明服务器正常启动了,你可以查询日志或用ps -aux查看。或用以下命令查询服务器:

    ldapsearch -x -b '' -s base '(objectclass=*)' namingContexts
        

    如果命o执行成功Q返回一些信息,则说明服务器正常q行了。如果启动不成功Q它会提CZ些出错信息,多数是slapd.conf配置出错。回头仔l核查一下配|文?/p>

  4. 客户端配|文是ldap.conf。该文相当单,其实不用配置也能正常操作?/p>

    # $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讄目录L
        #URI    ldap://ldap.example.com ldap://ldap-master.example.com:666
        #SIZELIMIT      12
        #TIMELIMIT      15
        #DEREF          never
        

2.2. 数据录入

服务器正常运作后Q就可以录入信息了。信息的录入有三U方法,一U是手工录入Q一U是.ldif文g格式录入Q一U是脚本自动录入。我们先从最基础的手工录入方式开始介l,了解录入信息的格式。明白了手工录入的格式,其它两种方式都很Ҏ明白。信息录入用到ldapaddq个E序。可在安装目录的bin目录下找到?/p>

2.2.1. 手动录入Ҏ

  • W一步是要徏立DNQ?/p>

    # ldapadd -x -D 'cn=root,dc=it,dc=com' -W
        dn: dc=it,dc=com
        objectClass: dcObject
        objectClass: organization
        dc: it
        o: Corporation
        description: d Corporation
        注意Q如果你用复?_脓功能把以上内Ҏ贝过去,一定要注意每行后面不要有空|q是手工输入Q按Ctrl+d存盘?
        
  • W二步是建立RDN:

    # ldapadd -x -D 'cn=root,dc=it,dc=com' -W
        #-x表示用简单验证,-D表示指定目录Q?W表示弹出密码输入提示
        

    输入密码Q这里的密码是在配置文g中rootpw设|的密码Q不是操作系l中root用户的密码。验证通过后就可输入以下内容:

    dn: uid=qq,dc=it,dc=com
        objectClass: person
        objectClass: organizationalPerson
        objectClass: inetOrgPerson
        uid: qq
        cn: qq
        sn: qq
        telephoneNumber: 138888888
        description: openldap test
        telexNumber: tex-8888888
        street: my street
        postOfficeBox: postofficebox
        displayName: qqdisplay
        homePhone: home1111111
        mobile: mobile99999
        mail:qq@qq.com
        

    输入完所有信息后Q按Ctrl+dl束存盘。如果出现出错信息,h一下对象类和属性的对应关系有没有错或输入失误。初学者就Ҏ出错的地Ҏ对象cd属性的对应关系没有处理好。对象类和属性是在schema文档中定义的。它们之间的关系是这LQ对象类中有些属性是必选的Q有些属性是可选的。录入信息的属性必d对象cM有定义才能用?/p>

输入以下命o可查询到刚才输入的信息?/p>

# ldapsearch -x -b 'dc=it,dc=com'
-b选项是设|目录v点,如果讄了客L的BASE配置参数Q该可不用?

如果按以上配|文件设|了aclQ用上面的查询命令是查询不到受保护的内容的。如上面的userPassword and mail。要查询到这些受限内容,需要通过验证才可以:

# ldapsearch -x -LLL -h it.com -b 'dc=it,dc=com' -D 'uid=qq,dc=it,dc=com' -W 'uid=qq'
接着提示输入密码。输入userPassword的密码回车,所有信息就都出来了?

2.2.2. 文g方式

.ldif文g方式也就是把以上手工输入的内容先写入一?ldif文g中,然后Q用ldapadd命o?f参数导入?/p>

# ldapadd -x -D "cn=root,dc=it,dc=com" -W -f test.ldif

一个完整的global.ldif文g例子Q?/p>

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命o来导入数据。该命o可以导入包含一些系l信息的ldif文gQ如Q?/p>

dn: dc=it,dc=com
objectClass: top
objectClass: dcObject
objectClass: organization
dc: it
structuralObjectClass: organization
entryUUID: d97b06da-d77e-1028-9866-d4ec7ac00d12
creatorsName: cn=anonymous            #pȝ信息
createTimestamp: 20041201005115Z      #pȝ信息
o:: 5bm/5bee5biC6JmO5aS055S15rGg6ZuG5Zui5pyJ6ZmQ5YWs5Y+4
userPassword:: e01ENX14TXBDT0tDNUk0SU56RkNhYjNXRW13PT0=
entryCSN: 2004120603:50:08Z#0x0001#0#0000     #pȝ信息
modifiersName: cn=admin,dc=it,dc=com          #pȝ信息
modifyTimestamp: 20041206035008Z              #pȝ信息
[Note]
再次提醒Q注意每行后面不要留有空根{?/td>

2.2.3. 脚本方式

脚本录入方式需要自已编写脚本,或到|上下蝲。有一个用PHP写的LDAP理工具不错Q叫phpLDAPadmin。可以到以下|址下蝲Q?a target="_top">http://phpldapadmin.sourceforge.net。安装方法也很简单,只要解压出来Q拷贝到apache的web目录下,按说明配|一下设定文?ok了?/p>

2.3. 常用命o介绍

接着为大家介l一下几个常用的ldap命oQ如果你用了phpLDAPadminE序Q其实它已经有一个很好的囑Ş介面帮你完成q些命o了。但了解一下还是对你还是很有益的,因ؓ命oҎ才是最Ҏ的?/p>

  • 删除命oldapdelete

    # ldapdelete -x -D 'cn=root,dc=it,dc=com' -W 'uid=qq1,dc=it,dc=com'
        
  • 重新索引ldap数据库命令slapindex

    # slapindex -f slapd.conf
        
  • 讄使用者密码,当然了,你的用户需要有userPassword了?/p>

    #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"理员的密码?/td>
  • 理员密码更?

    #slappasswd
        New password
        Re-enter new password
        {SSHA}83DJ4KVwqlk1uh9k2uDb8+NT1U4RgkEs
        

    接下再拷贝到 path/to/sldap.conf ?rootpw 卛_,重启使用配置文g生效

  • 通过ldapmodify修改目录内容

    # ldapmodify -x -D "cn=root,dc=it,dc=com" -W -f modify.ldif
        

    通过ldif文g修改ldap数据Qldif文g格式如下Q?/p>

    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验证

前提是你在系l中安装了sasl认证库,q在~译openldap时支持它Q默认就支持了。到http://asg.web.cmu.edu/cyrus下蝲。安装方法见我写的sendmail安装W记。安装好之后Q需要在sasl中徏立相应的帐号Q用以下命o可完成?/p>

# saslpasswd2 -c test

接着配置slapd.conf文gQ加入以下内宏V?/p>

sasl-regexp
uid=(.*),cn=.*,cn=auth
uid=$1,dc=it,dc=com

重启服务器配置文g生效。这个配|是最大权限的配置Q如果要l化h阅相x档。用以下命o试?/p>

# ldapsearch -U qq  -b 'uid=qq,dc=it,dc=com' -D 'dc=it,dc=com' -Y DIGEST-MD5

采用digest-md5验证,提示密码Q输入saslpasswd2的密码?/p>

2.5. 配置服务器复?/h2>

在一些关键的应用场合Q我们要求LDAP服务器能提供24时不间断的服务。当一台服务器出现故障或被黑客dӞ我们p很快地切换到另一台备份ldap服务器,l箋保持应用的正常运行。在openldap中有一个slurpdq程Q利用slurpdq程可帮助我们实C/从结构的ldap服务器。我们可讄一Cldap服务器,多台从ldap服务器,q保持这lldap服务器的数据同步。用时Q还需配置DNS服务器,把DNS服务器设|成一个域名对应你的多个ldap服务器的IP地址Q就可支持ldap服务器的不间断连l运行。下面简单介l一下主、从ldap服务器的配置?/p>

slurpdq行在主服务器上Q它能把L务器上的变化通过LDAP协议传送到从服务器上。从服务器上的变化不能传送到L务器上,也就是说是单向同步的。主从服务器的版本最好一P以减兼Ҏ问题。主从服务器的安装方法是一LQ关键是配置文g有所不同。我的操作系l是debian sargeQ在保M服务器能正常q行的前提下q行以下配置Q?/p>

  • 首先Q把M服务器关闭。通过以下三步操作静态同步主从服务器上的数据Q?/p>

    1. 把主服务器上/var/lib/ldap目录下的所有数据库文g全部拯C服务器的同目录中Q覆盖原有文件?/p>

    2. 把主服务器上?etc/ldap/schema目录下的所有schema文g拯C服务器的同目录中Q覆盖原有文件?/p>

    3. 把主服务器上/etc/ldap/slapd.conf文g拯C服务器的同目录中Q覆盖原有文件?/p>

  • 配置L务器上的slapd.conf文gQ取消replogfile指o前的注释W号Q取消后的结果如下:

    # Where to store the replica logs for database #1
        replogfile      /var/lib/ldap/replog
        

    增加replica指oQ如Q?/p>

    #replace config
        replica uri=ldap://192.168.6.195:389     #指定从服务器L名和端口?
        binddn="cn=admin,dc=com"         #指定需同步的DN的管理员
        bindmethod=simple credentials=1  #指定验证方式和需同步的DN的管理员密码
        
  • 配置从服务器上的slapd.conf文gQ增加updatedn指oQ如Q?/p>

    updatedn "cn=admin,dc=com"          #与主服务器的binddn对应
        

    在从服务器的配置文g中,不要包含replica和replogfile指o?/p>

  • 先启动主服务器的slapd和slurpdQ再启动从服务器的slapd?/p>

配置完成后,我们可测试一下,在主服务器上修改一个目录项Q在从服务器上可查看目录的数据已同步?/p>

Chapter 3. 理工具

开源的目录服务理工具有很多,包括phpldapadminQgqQCPUQJXplore{。这些工具可帮助我们方便l护目录服务器上的数据。这些工具各有优~点Q下面简要介l一下,详细的内容可参考相关的官方|站?/p>

3.1. phpldapadmin

 

3.2. gq

 

3.3. CPU

 

3.4. JXplore

 

3.5. kldap

 

3.6. LAM

官方|站Q?a target="_top">http://lam.sourceforge.net/index.htm

Chapter 4. HowTo

  • 止整个服务器的匿名讉K

    在slapd.conf配置文g中加入disallow bind_anon卛_?/p>

  • 控制日志信息的输?/p>

    在slapd.conf文gQloglevel选项控制着日志输出信息的别。slapd服务的日志信息会记录在syslogd的LOG_LOCAL4中,我们可以为slapd专门生成一个日志文件。把以下内容d到syslog.conf文g中再使syslogdq程重新d配置文g卛_?/p>

    local4.debug                /var/log/slapd.log
        

    使syslogdq程重新d配置文gQ请用你机器上真实的syslogdq程的id代替下面的syslogd_pid?/p>

    debian:~# kill -HUP syslogd_pid
        


剑秋 2009-06-17 16:48 发表评论
]]>
OpenLdap的定义说?/title><link>http://www.aygfsteel.com/mycolby/articles/281862.html</link><dc:creator>剑秋</dc:creator><author>剑秋</author><pubDate>Fri, 12 Jun 2009 08:00:00 GMT</pubDate><guid>http://www.aygfsteel.com/mycolby/articles/281862.html</guid><wfw:comment>http://www.aygfsteel.com/mycolby/comments/281862.html</wfw:comment><comments>http://www.aygfsteel.com/mycolby/articles/281862.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/mycolby/comments/commentRss/281862.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/mycolby/services/trackbacks/281862.html</trackback:ping><description><![CDATA[<p>    刚接触openLdap,虽然按照|上的安装方法在XP上成功安装了,但是很多东西依旧不太明白,看了一些资?对于一些规?命名,定义{有了一定的了解,现在摘录下来:<br /> 接下来的事情是ldap其实是一个数据库Q不是数据库怎么存放资料呢?不过跟我们^常的关系数据?/p> <p>有所不同。关pL据库是有一张一张的二维表格来存放数据的。ldapcM我们的dnspȝQ是树状的。用</p> <p>节点来存放数据。当然一个树枝可以有n个节点,每个节点上存攄数据Q都是以key => value的Ş式?/p> <p>像我们的dnspȝ?br /> 我们在安装openLdap的时候,在slapd.conf文g里会包括q一些schemaQ那么schema起什么作用呢Q?/p> <p>schemacM关系数据库的字段说明Q包括字D名Q数据类型,数据长度{等</p> <p>如何向数据库d数据。ldap不支持sqlQ所以要用ldapaddq个E序来添加,d的时候要用一个ldif?/p> <p>Ӟ把要d的东西写在里面,ldif的格式在admin guide里面有说明,我在q里只是要说一下?br /> 5. Attribute Types <br />    (LDAP服务器的实现应该可以识别下面列出的属性类?<br />  <br /> 5.1. objectClass <br />    objectClass属性存在于L实体中,q且臛_包含两个属性|其中的一个值必Ltop<br /> 或者alias?br />  <br /> 5.2. aliasedObjectName<br />    如果包含q个属性的实体是alias的话Q那么目录服务就使用aliasedObjectName?br />  <br /> 5.3. knowledgeInformation<br />    q个属性已l不再用?br />  <br /> 5.4. cn <br />    cn是X.500U的commonName属性。包含一个对象的名字Q如果对象是person的时候,cnl常代表用户?/p> <p>全名?/p> <p>5.6. serialNumber<br />    serialNumber包含一个设备的序列受?br />  <br /> 5.7. c <br />    c包含一个两位数字的ISO国家代码(countryName)<br />  <br /> 5.8. l<br />    l属性包含了地区的名Uͼ例如城市Q乡镇或者其他的地理区域(localityName)<br />  <br /> 5.9. st<br />    st属性包含了州或者省的全?stateOrProvinceName)<br />  <br /> 5.10. street<br />    street属性包含实体对应的对象的物理地址Q例如包裹的邮寄地址?streetAddress)<br />  <br /> 5.11. o<br />    o属性包含了l织的名字?organizationName)<br />  <br /> 5.12. ou<br />    ou属性包含了l织单元的名U?organizationalUnitName)<br />  <br /> 5.13. title<br />    title属性包含了person在组l环境中的头衔,例如”Vice President”QpersonTitle属性将在作?/p> <p>person的头衔独立于他们的工作范畴?br />  <br /> 5.14. description<br />    description属性包含了对对象的一个human-readable描述?/p> <p>5.15. searchGuide<br />    searchGuide属性是由X.500客户端用来构造检索过滤器的。它由enhancedSearchGuide属性代替了?br />  <br /> 5.16. businessCategory<br />    businessCategory属性描qC一个组l的商业cd?br />  <br /> 5.17. postalAddress<br />    邮寄地址属性?br />  <br /> 5.18. postalCode<br />    邮政~码属?br />  <br /> 5.19. postOfficeBox<br />    邮箱属?br />  <br /> 5.21. telephoneNumber<br />    电话L属?br />  <br /> 5.22. telexNumber<br />    甉|L属?br />  <br /> 5.23. teletexTerminalIdentifier<br />    甉|l端标识W?br />  <br /> 5.24. facsimileTelephoneNumber<br />    传真机号码?br />  <br /> 5.27. registeredAddress<br />    registeredAddress属性包含一个收件h的邮寄地址Q必M收g人接受传递?br />  <br /> 5.28. destinationIndicator<br />    destinationIndicator属性用来用电报服务?/p> <p>5.31. supportedApplicationContext<br />  <br />    This attribute contains the identifiers of OSI application contexts.<br />    supportedApplicationContext属性包含了OSI应用E序标识W?br />  <br /> 5.32. member<br />      ( 2.5.4.31 NAME ''member'' SUP distinguishedName )<br />  <br /> 5.33. owner<br />      ( 2.5.4.32 NAME ''owner'' SUP distinguishedName )<br />  <br /> 5.34. roleOccupant<br />      ( 2.5.4.33 NAME ''roleOccupant'' SUP distinguishedName )<br />  <br /> 5.35. seeAlso<br />      ( 2.5.4.34 NAME ''seeAlso'' SUP distinguishedName )<br />  <br /> 5.36. userPassword<br />    密码使用8位字节的字符串进行明文存储?/p> <p>5.37. userCertificate <br />    userCertificate属性通过二进制方式存储和hQ例?#8221;userCertificate;binary”.<br />  <br /> 5.38. cACertificate<br />    cACertificate属性通过二进制方式存储和hQ例?#8221;cACertificate;binary”.<br />  <br /> 5.39. authorityRevocationList.<br />    authorityRevocationList属性通过二进制方式存储和hQ例? authorityRevocationList;binary”.<br />  <br /> 5.43. givenName<br />    givenName属性用来表Cperson的部分名字,既不是surname也不是middlename?br />  <br /> 5.44. initials<br />    initials属性包含了一个h的名字中的一些或者全部首字母Q但不是surname(s)?br />   <br /> 5.48. enhancedSearchGuide<br />    enhancedSearchGuide属性由X.500客户端用来构造检索过滤器?/p> <p>5.51. uniqueMember<br />    唯一的成员?br />   <br /> 5.53. supportedAlgorithms<br />    supportedAlgorithms属性包含了支持的算法?br />    <br /> 7. Object Classes<br />    LDAP服务器必能够识别top和subschemaq两个object class。LDAP服务器应该可以识别其他的object class?/p> <p><br />  </p> <img src ="http://www.aygfsteel.com/mycolby/aggbug/281862.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/mycolby/" target="_blank">剑秋</a> 2009-06-12 16:00 <a href="http://www.aygfsteel.com/mycolby/articles/281862.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <a href="http://www.aygfsteel.com/" title="狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频">狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频</a> </div> </footer> վ֩ģ壺 <a href="http://" target="_blank">°Ͷ</a>| <a href="http://" target="_blank">ƽ</a>| <a href="http://" target="_blank">ī</a>| <a href="http://" target="_blank">̨</a>| <a href="http://" target="_blank">ľ</a>| <a href="http://" target="_blank">°</a>| <a href="http://" target="_blank">ԭ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ޭ</a>| <a href="http://" target="_blank">½</a>| <a href="http://" target="_blank">Ҧ</a>| <a href="http://" target="_blank">̨</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ɽʡ</a>| <a href="http://" target="_blank">ٽ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">Ԫ</a>| <a href="http://" target="_blank">ʮ</a>| <a href="http://" target="_blank">ʦ</a>| <a href="http://" target="_blank">ƽ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">γ</a>| <a href="http://" target="_blank">Ԫ</a>| <a href="http://" target="_blank">ų</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">Ͳ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">½</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ƽ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">԰</a>| <a href="http://" target="_blank">ǿ</a>| <a href="http://" target="_blank"></a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>