25.2. LDAP 目錄樹的結構

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

容器

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

分葉

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

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

圖形 25.1. LDAP 目錄結構

LDAP 目錄結構

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

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

表格 25.1, "常用物件類別和屬性" 提供一個小型綜覽,介紹範例中所使用的 core.schemacore.schema 物件類別,包括所需的屬性和有效的屬性值。

表格 25.1. 常用物件類別和屬性

物件類別

意義

範例項目

強制屬性

dcObject

domainComponent (領域的名稱元件)

suse

dc

organizationalUnit

organizationalUnit (組織單位)

doc

ou

inetOrgPerson

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

Geeko Linux

sn 與 cn

範例 25.1, "摘自 schema.core"中摘述一段綱要指示詞及其說明 (將各行編號以便說明)。

範例 25.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 尋找這篇文章。