天天看點

了解與應用LDAP伺服器--bbs.chinaunix.net

 先聲明:我寫的隻是我對LDAP的一些了解,如果我的了解錯誤,那就是對兄弟們的誤導。是以你可以直接看文章的結尾提供的幾個網址。

關于LDAP的概念随便網上有很多,我不想重複,這裡隻是說一下我自己的了解。

都說它是“輕量級目錄協定”,太專業,我不懂,我隻把它想象成“簡單”的目錄協定。

幾個很重要的概念,以後會用到:

---------------------------------------------

dn :一條記錄的位置

dc :一條記錄所屬區域

ou :一條記錄所屬組織

cn/uid:一條記錄的名字/ID

---------------------------------------------

實際上更多時候我隻把它看成資料庫。我把它和我非常熟悉的MYSQL資料庫做比較,通常會得到更好的了解:

MYSQL用“表”儲存資料,LDAP用“樹”

MYSQL指定一條記錄要3個條件:DB、TABLE、ROW。

LDAP卻更自由,為什麼呢?因為LDAP資料是“樹”狀的,而且這棵樹是可以無限延伸的,假設你要樹上的一個蘋果(一條記錄),你怎麼告訴園丁它的位置呢?當然首先要說明是哪一棵樹(dc,相當于MYSQL的DB),然後是從樹根到那個蘋果所經過的所有“分叉”(ou,呵呵MYSQL裡面好象沒有這DD),最後就是這個蘋果的名字(uid,記得我們設計MYSQL或其它資料庫表時,通常為了友善管理而加上一個‘id’字段嗎?)。 好了!這時我們可以清晰的指明這個蘋果的位置了,就是那棵“歪脖樹”的東邊那個分叉上的靠西邊那個分叉的再靠北邊的分叉上的半紅半綠的……,暈了!你直接爬上去吧!我還是說說LDAP裡要怎麼定義一個字段的位置吧,樹(dc=waibo,dc=com),分叉(ou=bei,ou=xi,ou=dong),蘋果(cn=honglv),好了!位置出來了:

dn:cn=honglv,ou=bei,ou=xi,ou=dong,dc=waibo,dc=com

一個有名的畫家說過:“世上沒有相同的2個雞蛋”。當然也沒有相同的2個蘋果……,同樣,在LDAP裡也不可能存在2個相同的dn。

LDAP資料填充原理:

一棵樹的生長,要循序漸進,如果還沒有長出某個分叉,就不可能在那個分叉裡長出蘋果(問:FT!蘋果是長在分叉上的嗎?答:為了便于了解,你就當它是吧),同樣,LDAP資料庫也要一步步的充實,舉一個學校資料庫的例子,我們将要把一個龐大的學生檔案放到LDAP裡,大緻需要這麼做:

---------------------------------------------

1、建立“樹根”,這是通過修改“slapd.conf”來實作的,由于現在的目的是了解,是以具體步驟就不說了,反正就是在這一步建立了一個“dc=ourschool,dc=org”這樣一個“樹根”。 注意:我把它了解成“目錄”,或者“容器”,甚至它本身也是檔案(蘋果)的特殊形式,熟悉LINUX檔案系統的朋友會更容易了解。

2、建立18個系,分别是“dn

了解與應用LDAP伺服器--bbs.chinaunix.net

u=computer,dc=ourschool,dc=org”、“dn

了解與應用LDAP伺服器--bbs.chinaunix.net

u=film,dc=ourschool,dc=org”……

3、當然是在每個系裡面建立專業,比如“dn

了解與應用LDAP伺服器--bbs.chinaunix.net

u=linux,ou=computer,dc=ourschool,dc=org”……

4、(開始長蘋果吧!)加學生喽——“dn:cn=stan,ou=linux,ou=computer,dc=ourschool,dc=org”……

5、已經完成了嗎?對了!學生的詳細資訊還沒有呐!不過先這樣吧,反正記錄是可以編輯的。

---------------------------------------------

LDAP記錄的詳細資訊

dn:cn=stan,ou=linux,ou=computer,dc=ourschool,dc=org

objectClass:organizationalPerson

cn:stan

cn:小刀

sn:小刀

description:a good boy

(以上是一條記錄的資訊,如果把他儲存成LDIF檔案,可以導入到LDAP資料庫中)

上面不是說沒有學生詳細資訊嗎?怕你着急,就馬上寫出來了,隻是還沒有導入到LDAP裡,那是以後的事。這裡我先就你可能會産生的疑問做回答。

---------------------------------------------

Q1:“cn”不是在“dn”裡定義了嗎,怎麼又在後面重新定義了? 答:你要把“cn=stan,ou=linux,ou=computer,dc=ourschool,dc=org”看成是一個整體,它隻是屬性dn的值。

Q2:怎麼後面有2個“cn”,我以哪個為準? 答:差別于普通資料庫,LDAP每個屬性一般可以具有多個值,這樣不好嗎?你在學校資料庫裡找我的時候,隻要記得我的一個cn就可以了,用“cn=stan”或“cn=小刀”都可以找到我!

Q3:就這些屬性了嗎?我都不知道你是男是女。 答:先聲明,偶是男地。 LDAP對記錄的屬性做了嚴格的限制(這一點我不太喜歡),也就是說,你可以用哪些屬性,哪些屬性不能為空,哪些屬性最多隻能有一個值等,他們都給你規定好了。 幸好你有選擇的權利,比如這次我們是儲存學生資訊,那麼我們就定義一個“objectClass:organizationalPerson”,這樣“organizationalPerson”這個類所規定的所有屬性我們都可以用了,而且确實很适合我們。 雖然這個類中沒有“sex”這個屬性,不過你完全可以用一個“空閑”的屬性來頂替。 如果我們能自己建立“類”就更好了,但目前我還沒有時間去研究這個東西,我也期望高手指點啊

了解與應用LDAP伺服器--bbs.chinaunix.net

---------------------------------------------

好了!看到我貼的圖了嗎?那是我偷别人的,差不多能用我就不自己畫了

了解與應用LDAP伺服器--bbs.chinaunix.net

##############################################################

關于安裝配置LDAP,使之儲存系統使用者,這裡有一個非常好的網址,如果你的英文不是很差,都應該做的來,我偷個懶,就先不寫這方面的東西喽:

http://www.mandrakesecure.net/en/docs/ldap-auth.php

上面的方法我已經試過,是可行的,如果兄弟們配置的時候出現問題我們可以讨論讨論。

關于LDAP+POSTFIX,POSTFIX裡的“LDAP_README”中介紹的很詳細,我再說就是重複了。

##############################################################

其它相關資源:

yala (很實用的資料庫操作工具,簡單的說,他就是MYSQL的phpmyadmin,自己找下載下傳位址吧~)

http://www.openldap.org/ (說實話,我一直沒用上它,不過它是官方網站,不提也不好)

http://ldap.akbkhome.com/ (什麼‘類’下面有什麼‘屬性’,在這裡找)

  ldap上面的圖

了解與應用LDAP伺服器--bbs.chinaunix.net