- 論壇徽章:
- 0
|
理解與應(yīng)用 LDAP 服務(wù)器 (前段時間一直在做 LDAP+POSTFIX 相關(guān)項目,先把關(guān)于 LDAP 的一些經(jīng)驗寫出來,一來可能 會幫助一些人,二來對我自己所學(xué)知識也是一個鞏固。) 先聲明:這個是我在戴爾服務(wù)器上學(xué)到的,我寫的只是我對 LDAP 的一些理解,如果我的理解錯誤,那就是對兄弟們的誤導(dǎo)。所 以你可以直接看文章的結(jié)尾提供的幾個網(wǎng)址。 關(guān)于 LDAP 的概念隨便網(wǎng)上有很多,我不想重復(fù),這里只是說一下我自己的理解。 都說它是“輕量級目錄協(xié)議”,太專業(yè),我不懂,我只把它想象成“簡單”的目錄協(xié)議。
幾個很重要的概念,以后會用到: --dn :一條記錄的位置 dc :一條記錄所屬區(qū)域 ou :一條記錄所屬組織 cn/uid:一條記錄的名字/ID --實際上更多時候我只把它看成數(shù)據(jù)庫。 我把它和我非常熟悉的 MYSQL 數(shù)據(jù)庫做比較, 通常會得 到更好的理解: MYSQL 用“表”儲存數(shù)據(jù),LDAP 用“樹” MYSQL 指定一條記錄要 3 個條件:DB、TABLE、ROW。 LDAP 卻更自由,為什么呢?因為 LDAP 數(shù)據(jù)是“樹”狀的,而且這棵樹是可以無限延伸的,假設(shè) 你要樹上的一個蘋果(一條記錄) ,你怎么告訴園丁它的位置呢?當(dāng)然首先要說明是哪一棵樹 (dc, 相當(dāng)于 MYSQL 的 DB) 然后是從樹根到那個蘋果所經(jīng)過的所有“分叉” ou, , ( 呵呵 MYSQL 里面好象沒有這 DD) ,最后就是這個蘋果的名字(uid,記得我們設(shè)計 MYSQL 或其它數(shù)據(jù)庫表 時,通常為了方便管理而加上一個‘id’字段嗎?) 好了!
關(guān)于安裝配置 LDAP,使之儲存系統(tǒng)用戶,這里有一個非常好的網(wǎng)址,如果你的英文不是很差, 都應(yīng)該做的來,我偷個懶,就先不寫這方面的東西嘍: 上面的方法我已經(jīng)試過,是可行的,如果兄弟們配置的時候出現(xiàn)問題我們可以討論討論。 關(guān)于 LDAP+POSTFIX,POSTFIX 里的“LDAP_README”中介紹的很詳細(xì),我再說就是重復(fù) 了。
其它相關(guān)資源: yala (很實用的數(shù)據(jù)庫操作工具,簡單的說,他就是 MYSQL 的 phpmyadmin,自己找下載 地址吧~)(說實話,我一直沒用上它,不過它是官方網(wǎng)站,不提也不好)(什么‘類’下面有什么‘屬性’,在這里找) 關(guān)于 LDAP 的補充 ---- LDAP 就是 light DAP, 輕量級目錄訪問協(xié)議, 可以想象 還有一個 DAP, 70 年代誕生的 DAP 協(xié)議基于 X.400 目錄訪問協(xié)議。主要用于 大型主機,因為有大量不常用 的功能而且這些不用的功能消耗了過多的系統(tǒng)資源,雖然極強大,但是應(yīng)用不廣, 所以出現(xiàn)了 LDAP. 這是一個開放的協(xié)議, 具體的實現(xiàn)有 Netscape LDAP, Novell NDS, MS AD 等等,這 3 個 是使用最廣,影響最大的。 Netscape LDAP server 主要使用在 unix 或類 unix 系統(tǒng)上, MS AD 自然只能在 windows 上, NDS 是唯一一個跨平臺的產(chǎn)品。注意: LDAP 本身是平臺無關(guān)的。 工作原因,比較熟悉 NDS, AD 最熟。我個人最喜歡 NDS,AD 當(dāng)然最簡單,但是最不穩(wěn)定, 最亂,而且比較耗資源。 樓主說的類似數(shù)據(jù)庫,完全正確,因為它原本就是數(shù)據(jù)庫,只是不是關(guān)系型的數(shù)據(jù)庫,它是鏈?zhǔn)?數(shù)據(jù)庫,詳細(xì)細(xì)節(jié)可以找本數(shù)據(jù)庫原理,很詳細(xì)的。 和關(guān)系數(shù)據(jù)庫一樣, LDAP 內(nèi)能夠定義哪些對象,每個對象可以有什么屬性,每個屬性可以取 什么樣的值,這樣一個框架結(jié)構(gòu)被稱為 Schema,它是類,對象,屬性的集合。類又分為抽象 類(只能做父類,不能實例化)和結(jié)構(gòu)類(可以實例化) ,編程的朋友會發(fā)現(xiàn)和面向?qū)ο蟮木幊?的概念完全一樣。 舉例: LDAP 內(nèi)必須先有 user 類, 然后用 user 類創(chuàng)建 user 對象(一般缺省有的) ,我們才 能創(chuàng)建具體的用戶賬號(實例化) schema 中 user 對象被指定了有哪些屬性,我們創(chuàng)建賬號 , 的時候才能給賬號哪些屬性,例如 schema 中 user 對象沒有別名屬性,我們就不能給賬號起別 名。 Schema 的擴展: 缺省的 schema 一般預(yù)先創(chuàng)建有足夠的類,對象和屬性,例如 MS 的 AD 缺省有 170 個類和 833 個對象和屬性。 但是如果不能滿足需要的話, 我們就可以擴展 Schema,一般是使用 LDAP API, 例如 MS 的 ADSI, NDS 有專門的工具,當(dāng)然也可以直接使用 LDAP 查詢語言,來直接 操作整個 LDAP 目錄樹。 |
|