35.2 LDAP 目錄樹的結構

LDAP 的目錄具有樹狀結構。階層中的所有目錄項目 (稱為物件) 都有一個規定的位置。此階層稱為目錄資訊樹 (DIT)。通往所需項目的完整路徑稱為可辨識名稱或 DN,可用來清楚辨識路徑。此項目路徑中的單一節點稱為相關可辨識名稱或 RDN。可將物件指定為下列兩種類型:

容器

這些物件可包含其它物件。這些物件的類別為 root (目錄樹的根元素,此元素其實並不存在)、c (國家)、ou (組織單位) 和 dc (領域元件)。此模型可媲美檔案系統中的目錄 (資料夾)。

分葉

這些物件位於分支末端,而且沒有附屬物件。例如 personInetOrgPersongroupofNames

目錄階層的頂端有一個根元素 root。其中可包含 c (國家)、dc (領域元件) 或 o (組織) 作為其附屬元件。從下列範例 (顯示於 圖 35-1) 可清楚看出 LDAP 目錄樹中的關係。

圖 35-1 LDAP 目錄結構

這個完整的結構圖是由一棵虛擬的目錄資訊樹所組成。其中包含三個階層的項目。每個項目分別對應到圖上的一個方塊。在此範例中,虛擬的 員工 Geeko Linux 有一個完整有效的可辨識名稱,即 cn=Geeko Linux,ou=doc,dc=example,dc=com。此名稱的形成是將 RDN cn=Geeko Linux 加到前一個項目 ou=doc,dc=example,dc=com 的 DN。

物件類型應儲存於 DIT 且遵循綱要全域判斷。物件類型則是由物件類別來決定。物件類別決定相關物件必須或可以被指定哪一種屬性。因此,綱要的內容必須包括所有物件類別的定義,以及所需應用程式案例中使用的屬性。有幾個通用綱要 (請參閱 RFC 2252 和 2256)。不過,仍可建立自定的綱要。如果用來操作 LDAP 的伺服器環境需要,也可使用多個綱要來互相輔助。

表 35-1提供一個小型概觀,介紹範例中所使用的 core.schemainetorgperson.schema 物件類別,包括所需的屬性和有效的屬性值。

表 35-1 常用物件類別和屬性

物件類別

代表意義

範例項目

必要屬性

dcObject

domainComponent (領域的名稱元件)

範例

dc

organizationalUnit

organizationalUnit (組織單位)

doc

ou

inetOrgPerson

inetOrgPerson (內部網路或網際網路的相關人員資料)

Geeko Linux

sn 與 cn

範例 35-1中摘述一段綱要指示詞及其說明 (將各行編號以便說明)。

範例 35-1 摘自 schema.core

#1 attributetype (2.5.4.11 NAME ( 'ou' 'organizationalUnitName')
#2        DESC 'RFC2256: organizational unit this object belongs to'
#3        SUP name )

...
#4 objectclass ( 2.5.6.5 NAME 'organizationalUnit'
#5        DESC 'RFC2256: an organizational unit'
#6        SUP top STRUCTURAL
#7        MUST ou
#8 MAY (userPassword $ searchGuide $ seeAlso $ businessCategory 
    $ x121Address $ registeredAddress $ destinationIndicator 
    $ preferredDeliveryMethod $ telexNumber 
    $ teletexTerminalIdentifier $ telephoneNumber 
    $ internationaliSDNNumber $ facsimileTelephoneNumber 
    $ street $ postOfficeBox $ postalCode $ postalAddress 
    $ physicalDeliveryOfficeName
    $ st $ l $ description) )
...

organizationalUnitName 屬性類型和對應的 organizationalUnit 物件類別在此作為範例之用。第 1 行的重點為屬性名稱、其唯一的 OID (物件識別碼) (數值) 和屬性的縮寫。

第 2 行提供屬性說明和 DESC。另外還包括對應的 RFC,可據此列出相關定義。第 3 行的 SUP 表示此屬性所隸屬的上級屬性類型。

第 4 行開始為 organizationalUnit 物件類型的定義,內容包括 OID 和物件類別名稱,如同屬性定義一樣。第 5 行為物件類別的簡短說明。第 6 行的 SUP top 項目表示此物件類別不隸屬於其它物件類別。第 7 行始於 MUST,列出所有必須和 organizationalUnit 類型物件配合使用的屬性類型。第 8 行始於 MAY,列出所有允許和此物件類別配合使用的屬性類型。

有關綱要的使用,可在 OpenLDAP 文件中找到一篇很好的介紹。安裝好之後,請至 /usr/share/doc/packages/openldap2/admin-guide/index.html 尋找這篇文章。