<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    每日一得

    不求多得,只求一得 about java,hibernate,spring,design,database,Ror,ruby,快速開發
    最近關心的內容:SSH,seam,flex,敏捷,TDD
    本站的官方站點是:顛覆軟件

      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      220 隨筆 :: 9 文章 :: 421 評論 :: 0 Trackbacks
    key words : openldap ldap

    發布時間:2004年04月07日

    最近更新:2005年08月08日

    Abstract

    LDAP (輕量級目錄服務訪問協議,Lightweight Directory Access Protocol)基于X.500標準,支持TCP/IP,使用簡單方便。現在越來越多的網絡應用系統都支持LDAP。OpenLDAP是LDAP的一種 開源實現,本筆記基于OpenLDAP2.1.29。


    Chapter?1.?目錄服務簡介

    目 錄是一個為查詢、瀏覽和搜索而優化的專業分布式數據庫,它成樹狀結構組織數據,就好象Linux/Unix系統中的文件目錄一樣。目錄數據庫和關系數據庫 不同,它有優異的讀性能,但寫性能差,并且沒有事務處理、回滾等復雜功能,不適于存儲修改頻繁的數據。所以目錄天生是用來查詢的,就好象它的名字一樣。目 錄服務是由目錄數據庫和一套訪問協議組成的系統。類似以下的信息適合儲存在目錄中:

    • 企業員工和企業客戶之類人員信息;

    • 公用證書和安全密鑰;

    • 郵件地址、網址、IP等電腦信息;

    • 電腦配置信息。

    • ...

    1.1.?X.500和LDAP

    現在國際上的目錄服務標準有兩個,一個是較早的X.500標準,一個是較新的LDAP標準。

    • X.500是一個協議族,由一系列的概念和協議組成,包括:

      • X.501是模型定義,定義目錄服務的基本模型和概念;

      • X.509是認證框架,定義如何處理目錄服務中客戶和服務器認證;

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

      • X.518是分布式操作過程定義,定義如何跨平臺處理目錄服務;

      • X.519 是協議規范,定義了X.500協議,包括DAP(Directory Access Protocol,目錄訪問協議)、DSP(Directory System Protocol,目錄系統協議)、DOP(Directory Operator Protocol,目錄操作綁定協議)、DISP(Directory Information Shadowing Protocol,目錄信息陰影協議 );

      • X.520定義屬性類型要求;

      • X.521定義對象類型;

      • X.525定義如果在目錄服務器間復制內容。

      X.500標準中定義了很多內容,包括:

      • 定義了信息模型,確定目錄中信息的格式和字符集,如何在項中表示目錄信息(定義對象類、屬性等模式);

      • 定義命名空間,確定對信息進行的組織和引用,如何組織和命名項-目錄信息樹DIT和層次命名模型;

      • 定義功能模型,確定可以在信息上執行的操作;

      • 定義認證框架,保證目錄中信息的安全,如何實現目錄中信息的授權保護-訪問控制模型;

      • 定義分布操作模型,確定數據如何分布和如何對分布數據執行操作,如何將全局目錄樹劃分為管理域,以便管理。

      • 定義客戶端與服務器之間的通信的各種協議。

      由于X.500較復雜,且需嚴格遵照OSI七層協議模型。造成應用開發較困難。所以開發了LDAP,以便在INTERNET上使用。

    • LDAP協議于1993年獲批準,產生LDAPv1版,1997年發布最新的LDAPv3版,該版本是LDAP協議發展的一個里程碑,它作為X.500的簡化版提供了很多自有的特性,使LDAP功能更為完備,具有更強大的生命力。

      LDAP也是一個協議族,包含以下內容:

      • RFC 2251--LDAPv3核心協議,定義了LDAPv3協議的基本模型和基本操作;

      • RFC 2252--定義LDAPv3基本數據模式(Schema)(包括語法、匹配規則、屬性類型和對象類)以及標準的系統數據模式;

      • RFC 2253--定義LDAPv3中的分辯名(DN)表達式;

      • RFC 2254--定義了LDAPv3中的過濾表達式;

      • RFC 2255--定義LDAPv3統一資源地址的格式;

      • RFC 2256--定義LDAPv3中使用X.500的Schema列表;

      • RFC 2829--定義了LDAPv3中的認證方式;

      • RFC 2830--定義了如何通過擴展使用TLS服務;

      • RFC 1823--定義了C的LDAP客戶端API開發接口;

      • RFC 2847--定義了LDAP數據導入、導出文件接口LDIF。

      這些協議定義了LDAP的內容,包括:

      • 定義了一個信息模型,確定了LDAP目錄中信息的格式和字符集,如何表示目錄信息(定義對象類、屬性、匹配規則和語法等模式);

      • 定義了命名空間,確定信息的組織方式--目錄樹DIT,以DN和RDN為基礎的命名方式,以及LDAP信息的Internet表示方式;

      • 定義了功能模型,確定在可以在信息上執行的操作及API。

      • 定義了安全框架,保證目錄中信息的安全,定義匿名、用戶名/密碼、SASL等多種認證方式,以及與TLS結合的通訊保護框架;

      • 定義分布式操作模型,基于指引方式的分布式操作框架;

      • 定義了LDAP擴展框架。

    1.2.?LDAP產品

    現 在市場上有關LDAP的產品已有很多,各大軟件公司都在他們的產品中集成了LDAP服務,如Microsoft的ActiveDirectory、 Lotus的Domino Directory、IBM的WebSphere中也集成了LDAP服務。LDAP的開源實現是OpenLDAP,它比商業產品一點也不差,而且源碼開 放。

    Chapter?2.?OpenLDAP安裝筆記

    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://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
      #設置使用的資料庫,也可用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://root.openldap.org

      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_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"
      #改成你自已的目錄后綴,
      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.example.com ldap://ldap-master.example.com:666

      #SIZELIMIT 12
      #TIMELIMIT 15
      #DEREF never

    2.2.?數據錄入

    服 務器正常運作后,就可以錄入信息了。信息的錄入有三種方法,一種是手工錄入,一種是.ldif文件格式錄入,一種是腳本自動錄入。我們先從最基礎的手工錄 入方式開始介紹,了解錄入信息的格式。明白了手工錄入的格式,其它兩種方式都很容易明白。信息錄入用到ldapadd這個程序。可在安裝目錄的bin目錄 下找到。

    2.2.1.?手動錄入方法

    • 第一步是要建立DN:

      # 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
      注意:如果你用復制/粘貼功能把以上內容拷貝過去,一定要注意每行后面不要有空格,建議還是手工輸入,按Ctrl+d存盤。
    • 第二步是建立RDN:

      # ldapadd -x -D 'cn=root,dc=it,dc=com' -W        
      #-x表示用簡單驗證,-D表示指定目錄,-W表示彈出密碼輸入提示

      輸入密碼,這里的密碼是在配置文件中rootpw項設置的密碼,不是操作系統中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

      輸入完所有信息后,按Ctrl+d結束存盤。如果出現出錯信息,請查一下對象類和屬性的對應關系有沒有錯或輸入失誤。初學者就容易出錯 的地方是對象類和屬性的對應關系沒有處理好。對象類和屬性是在schema文檔中定義的。它們之間的關系是這樣的,對象類中有些屬性是必選的,有些屬性是 可選的。錄入信息的屬性必須在對象類中有定義才能用。

    輸入以下命令可查詢到剛才輸入的信息。

    # ldapsearch -x -b 'dc=it,dc=com'            
    -b選項是設置目錄起點,如果設置了客戶端的BASE配置參數,該項可不用。

    如果按以上配置文件設置了acl,用上面的查詢命令是查詢不到受保護的內容的。如上面的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.?文件方式

    .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.?管理工具

    開源的目錄服務管理工具有很多,包括phpldapadmin,gq,CPU,JXplore等。這些工具可幫助我們方便維護目錄服務器上的數據。這些工具各有優缺點,下面簡要介紹一下,詳細的內容可參考相關的官方網站。

    3.1.?phpldapadmin

    3.2.?gq

    3.3.?CPU

    3.4.?JXplore

    Chapter?4.?HowTo

    4.1.?禁止整個服務器的匿名訪問

    在slapd.conf配置文件中加入disallow bind_anon即可。


    posted on 2006-08-10 09:33 Alex 閱讀(1519) 評論(0)  編輯  收藏 所屬分類: linux
    主站蜘蛛池模板: 亚洲av无码偷拍在线观看| 99在线免费观看视频| 好吊妞998视频免费观看在线| 中文字幕亚洲一区二区三区| 亚洲日本一线产区和二线产区对比| 国产成人精品一区二区三区免费| 国产一区视频在线免费观看| 亚洲中文字幕久久精品无码2021| 成人性生交大片免费看好| 全部免费毛片在线| 一区二区亚洲精品精华液| 真实国产乱子伦精品免费| 亚洲理论电影在线观看| 美女被免费网站在线视频免费 | 日本道免费精品一区二区| 啊v在线免费观看| 最新国产精品亚洲| 亚洲一级毛片免费在线观看| 亚洲av综合avav中文| 国产精品美女久久久免费| 免费一级特黄特色大片在线观看| 日韩亚洲不卡在线视频中文字幕在线观看| 99精品热线在线观看免费视频| 亚洲中文字幕不卡无码| 一区免费在线观看| 无码不卡亚洲成?人片| 亚洲av无码专区在线观看下载 | 亚洲天堂免费在线| 0588影视手机免费看片| 久久亚洲精精品中文字幕| 日本高清高色视频免费| 亚洲第一AV网站| 国产成人AV免费观看| 亚洲国产综合无码一区| 本免费AV无码专区一区| 国产亚洲一区区二区在线| 四虎国产精品永免费| 亚洲 无码 在线 专区| 免费高清A级毛片在线播放| 免费国产成人高清视频网站| 国产成人亚洲综合无|