基于Linux操作系統(tǒng)的目錄服務(wù)的實現(xiàn) |
發(fā)布時間: 2012/8/26 18:29:09 |
本文的目的是通過使用Linux系統(tǒng)支持的應(yīng)用軟件包(openldap),快速實現(xiàn)基于LDAP協(xié)議的目錄服務(wù)系統(tǒng)來支持Windows消息簿中的用戶查詢功能。作者從用戶的觀點介紹了目錄服務(wù)的特點,并比較了其與通常使用的關(guān)系數(shù)據(jù)庫在處理數(shù)據(jù)上的差別,作者只是普通的Linux的愛好者,嘗試將所學(xué)到的一點Linux知識進(jìn)行綜合應(yīng)用,希望對大家有所啟發(fā)。
關(guān)鍵字:目錄、LDAP。 如果需要開發(fā)一種提供公共信息查詢的系統(tǒng),如通過用戶姓名能夠獲得該用戶的郵件地址、家庭住址等信息,如Yahoo提供的People search服務(wù)和Windows OutLook中提供的消息簿功能。一般的設(shè)計方法可能是采用基于WEB的數(shù)據(jù)庫設(shè)計方式,即前端使用瀏覽器而后端使用WEB服務(wù)器加上關(guān)系數(shù)據(jù)庫。后端在Windows的典型實現(xiàn)可能是Windows NT + IIS + Acess數(shù)據(jù)庫或者是SQL服務(wù)器,IIS和數(shù)據(jù)庫之間通過ASP技術(shù)使用ODBC進(jìn)行連接,達(dá)到通過填寫表單查詢數(shù)據(jù)的功能;后端在Linux系統(tǒng)的典型實現(xiàn)可能是Linux + Apache + Postgresql,Apache和數(shù)據(jù)庫之間通過PHP3提供的函數(shù)進(jìn)行連接。使用上述方法的缺點是后端關(guān)系數(shù)據(jù)庫的引入導(dǎo)致系統(tǒng)整體的性能降低和系統(tǒng)的管理比較繁瑣,因為需要不斷的進(jìn)行數(shù)據(jù)類型的驗證和事務(wù)的完整性的確認(rèn);并且前端用戶對數(shù)據(jù)的控制不夠靈活,用戶權(quán)限的設(shè)置一般只能是設(shè)置在表一級而不是設(shè)置在記錄一級。 目錄服務(wù)的推出主要是解決上述數(shù)據(jù)庫中存在的問題。目錄與關(guān)系數(shù)據(jù)庫相似,是指具有描述性的基于屬性的記錄集合,但它的數(shù)據(jù)類型主要是字符型,為了檢索的需要添加了BIN(二進(jìn)制數(shù)據(jù))、CIS(忽略大小寫)、CES(大小寫敏感)、TEL(電話型)等語法(Syntax),而不是關(guān)系數(shù)據(jù)庫提供的整數(shù)、浮點數(shù)、日期、貨幣等類型,同樣也不提供象關(guān)系數(shù)據(jù)庫中普遍包含的大量的函數(shù),它主要面向數(shù)據(jù)的查詢服務(wù)(查詢和修改操作比一般是大于10:1),不提供事務(wù)的回滾(rollback)機(jī)制,它的數(shù)據(jù)修改使用簡單的鎖定機(jī)制實現(xiàn)All-or-Nothing,它的目標(biāo)是快速響應(yīng)和大容量查詢并且提供多目錄服務(wù)器的信息復(fù)制功能。 LDAP(Lightweight Directory Acess Protocol)是目錄服務(wù)在TCP/IP上的實現(xiàn)(RFC 1777 V2版和RFC 2251 V3版)。它是對X500的目錄協(xié)議的移植,但是簡化了實現(xiàn)方法,所以稱為輕量級的目錄服務(wù)。在LDAP中目錄是按照樹型結(jié)構(gòu)組織,目錄由條目(Entry)組成,條目相當(dāng)于關(guān)系數(shù)據(jù)庫中表的記錄;條目是具有區(qū)別名DN(Distinguished Name)的屬性(Attribute)集合,DN相當(dāng)于關(guān)系數(shù)據(jù)庫表中的關(guān)鍵字(Primary Key);屬性由類型(Type)和多個值(Values)組成,相當(dāng)于關(guān)系數(shù)據(jù)庫中的域(FIEld)由域名和數(shù)據(jù)類型組成,只是為了方便檢索的需要,LDAP中的Type可以有多個Value,而不是關(guān)系數(shù)據(jù)庫中為降低數(shù)據(jù)的冗余性要求實現(xiàn)的各個域必須是不相關(guān)的。LDAP中條目的組織一般按照地理位置和組織關(guān)系進(jìn)行組織,非常的直觀。LDAP把數(shù)據(jù)存放在文件中,為提高效率可以使用基于索引的文件數(shù)據(jù)庫,而不是關(guān)系數(shù)據(jù)庫。LDAP協(xié)議集還規(guī)定了DN的命名方法、存取控制方法、搜索格式、復(fù)制方法、URL格式、開發(fā)接口等。 Linux支持的LDAP服務(wù)器一般有Michigan大學(xué)開發(fā)的免費軟件包和Openldap組織基于Michigan大學(xué)的開發(fā)包提供的Openldap免費軟件發(fā)行包,其中Openldap發(fā)行包安裝配置更加簡單。RedHat 6.1 Linux發(fā)行版中就包含了Openldap軟件包,該發(fā)行版可從計算機(jī)世界報信息服務(wù)中心得到,對LDAP的支持是Redhat6.1提供的一個重要擴(kuò)展,(參見Redhat 6.1產(chǎn)品介紹),以下詳細(xì)介紹在Linux中安裝并配置Openldap的方法,以及使用該軟件包為Windows Outlook中的帳號提供消息簿的后端。 1.安裝Openldap-1.2.7-2.rpm軟件包 如果不是使用的RedHat 6.1直接進(jìn)行系統(tǒng)安裝,可以單獨使用管理器rpm進(jìn)行獨立安裝,其格式為:
2.相關(guān)文件 安裝完畢后,相應(yīng)的執(zhí)行文件主要有: /usr/sbin/slapd是單獨運行的LDAP看守進(jìn)程,它監(jiān)聽客戶端請求,端口號一般是389。 /usr/sbin/slurpd是單獨運行的LDAP更新和復(fù)制進(jìn)程,它能夠把本地數(shù)據(jù)庫的變化通知相關(guān)服務(wù)器進(jìn)行更新。 /usr/sbin/ldifldbm、/usr/sbin/ldbmcat等將LDIF(LDAP Directory Interchange Format)文件(實際是純文本形式的文件)轉(zhuǎn)化為gdbm形式的二進(jìn)制數(shù)據(jù)文件以及相關(guān)的工具。 /usr/bin/ldapsearch、/usr/bin/ldapdelete、/usr/bin/ldapmodify、/usr/bin/ud等是LDAP的客戶端軟件,能夠完成對目錄的搜索、添加、修改、刪除等功能。 生成的配置文件在/etc/openldap目錄下,主要的配置文件有: slapd.conf是slapd和slurpd的配置文件,其一般形式如下:
對這個配置文件的關(guān)鍵修改是對suffix后綴為本地的組織形式,可以按照域名的形式,也可以按照組織模式。其中的rootdn定義了本地目錄樹的根,rootpw即是相對于本目錄樹的管理員口令,缺省是使用的明文為“secret”。其中的replica指定備份目錄服務(wù)器的地址,如果是備份服務(wù)器則不需要replica配置項,而是添加udpatedn=主目錄服務(wù)器的地址,同時指定referral為主目錄服務(wù)器。同時,缺省的目錄數(shù)據(jù)是以ldbm形式(Linux中實際gdbm格式)存放在/usr/tmp目錄中。Access定義了對目錄信息的訪問信息,它是基于條目的,即用戶自己可以通過輸入自己的口令修改自己的數(shù)據(jù),其口令存放在自己的口令域(userpassWord)中。 ldap.conf是本地系統(tǒng)LDAP客戶的缺省配置,啟動slapd后可以使用客戶端軟件使用ldap.conf的信息作為缺省信息。根據(jù)我們的具體情況,將其修改為如下形式:
本文出自:億恩科技【mszdt.com】 服務(wù)器租用/服務(wù)器托管中國五強(qiáng)!虛擬主機(jī)域名注冊頂級提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM] |