為了取得關於 LDAP 伺服器工作方式以及資料儲存方式的深層背景知識,請務必瞭解資料在伺服器上的組織方式,以及您如何透過此結構利用 LDAP 快速存取所需的資料。若要成功操作 LDAP 設定,還需要熟悉一些基本的 LDAP 術語。本章節介紹 LDAP 目錄樹的基本配置,並提供 LDAP 網路位置中使用的基本術語。如果您已具備一定的 LDAP 背景知識,現在只想知道如何在 SUSE Linux Enterprise 中設定 LDAP 環境,那麼請跳過此介紹章節。
LDAP 的目錄具有樹狀結構。階層中的所有目錄項目 (稱為物件) 都有一個規定的位置。此階層稱為目錄資訊樹 (DIT)。通往所需項目的完整路徑稱為可辨識名稱或 DN,可用來清楚辨識路徑。此項目路徑中的單一節點稱為相關可辨識名稱或 RDN。可將物件指定為下列兩種類型:
這些物件可包含其它物件。這些物件的類別為 root (目錄樹的根元素,此元素其實並不存在)、c (國家)、ou (組織單位) 和 dc (領域元件)。此模型可媲美檔案系統中的目錄 (資料夾)。
這些物件位於分支末端,而且沒有附屬物件。例如 person、InetOrgPerson 或 groupofNames。
目錄階層的頂端有一個根元素 root。其中可包含 c (國家)、dc (領域元件) 或 o (組織) 作為其附屬元件。從下列範例 (顯示於 圖形 35.1 「LDAP 目錄結構」) 可清楚看出 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.schema 和 inetorgperson.schema 物件類別,包括所需的屬性和有效的屬性值。
表格 35.1. 常用物件類別和屬性
物件類別 | 代表意義 | 範例項目 | 必要屬性 |
|---|---|---|---|
dcObject | domainComponent (領域的名稱元件) | 範例 | dc |
organizationalUnit | organizationalUnit (組織單位) | doc | ou |
inetOrgPerson | inetOrgPerson (內部網路或網際網路的相關人員資料) | Geeko Linux | sn 與 cn |
範例 35.1 「摘自 schema.core 」中摘述一段綱要指示詞及其說明 (將各行編號以便說明)。
範例 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 尋找這篇文章。