每一個系統、協議都會有屬于自己的模型,了解LDAP的基本模型之前需要先了解一些基本概念。
一、 目錄樹概念簡介
- 目錄樹:在一個目錄服務系統中,整個目錄信息集可以表示為一個目錄信息樹,樹中的每個節點是一個條目(Entry)。
- 條目:每個條目就是一條記錄,每個條目有自己的唯一可區別的名稱(DN)。
- 對象類:與某個實體類型對應的一組屬性,對象類是可以繼承的,這樣父類的必須屬性也會被繼承下來(ObjectClass)。
- 屬性:描述條目的某個方面的信息,一個屬性由一個屬性類型和一個或多個屬性值組成,屬性有必須屬性和非必須屬性(Attribute)。
二 、概念說明
條目 Entry
條目,也叫記錄項,是LDAP中最基本的顆粒,就像字典中的詞條,或者是數據庫中的記錄。通常對LDAP的添加、刪除、更改、檢索都是以條目為基本對象的。
dn:每一個條目都有一個唯一的標識名(distinguished Name ,DN),如一個 dn:”cn=baby,ou=marketing,ou=people,dc=mydomain,dc=org” 。通過DN的層次型語法結構,可以方便地表示出條目在LDAP樹中的位置,通常用于檢索。
rdn:一般指dn逗號最左邊的部分,如cn=baby。它與RootDN不同,RootDN通常與RootPW同時出現,特指管理LDAP中信息的最高權限用戶。
Base DN:LDAP目錄樹的最頂部就是根,也就是所謂的“Base DN”,如”dc=mydomain,dc=org”。
屬性 Attribute
每個條目都可以有很多屬性(Attribute),比如常見的人都有姓名、地址、電話等屬性。每個屬性都有名稱及對應的值,屬性值可以有單個、多個,比如你有多個郵箱。
屬性不是隨便定義的,需要符合一定的規則,而這個規則可以通過schema制定。比如,如果一個entry沒有包含在 inetorgperson 這個 schema 中的 objectClass: inetOrgPerson ,那么就不能為它指定employeeNumber屬性,因為employeeNumber是在inetOrgPerson中定義的。
LDAP為人員組織機構中常見的對象都設計了屬性(比如commonName,surname)。下面有一些常用的別名:
| 屬性 | 語法 | 描述 | 值(舉例) |
|---|---|---|---|
| cn | Directory String | 姓名 | sean |
| sn | Directory String | 姓 | Chow |
| ou | Directory String | 單位(部門)名稱 | IT_SECTION |
| o | Directory String | 組織(公司)名稱 | example |
| telephoneNumber | Telephone Number | 電話號碼 | 110 |
| objectClass | 內置屬性 | organizationalPerson |
對象類 ObjectClass
對象類是屬性的集合,LDAP預想了很多人員組織機構中常見的對象,并將其封裝成對象類。比如人員(person)含有姓(sn)、名(cn)、電話(telephoneNumber)、密碼(userPassword)等屬性,單位職工(organizationalPerson)是人員(person)的繼承類,除了上述屬性之外還含有職務(title)、郵政編碼(postalCode)、通信地址(postalAddress)等屬性。
通過對象類可以方便的定義條目類型。每個條目可以直接繼承多個對象類,這樣就繼承了各種屬性。如果2個對象類中有相同的屬性,則條目繼承后只會保留1個屬性。對象類同時也規定了哪些屬性是基本信息,必須含有(Must 活Required,必要屬性):哪些屬性是擴展信息,可以含有(May或Optional,可選屬性)。
對象類有三種類型:結構類型(Structural)、抽象類型(Abstract) 和 輔助類型(Auxiliary)。
- 結構類型是最基本的類型,它規定了對象實體的基本屬性,每個條目屬于且僅屬于一個結構型對象類。
- 抽象類型可以是結構類型或其他抽象類型父類,它將對象屬性中共性的部分組織在一起,稱為其他類的模板,條目不能直接集成抽象型對象類。
- 輔助類型規定了對象實體的擴展屬性。每個條目至少有一個結構性對象類。
Schema
對象類(ObjectClass)、屬性類型(AttributeType)、語法(Syntax)分別約定了條目、屬性、值。 所以這些構成了模式(Schema)——對象類的集合。 條目數據在導入時通常需要接受模式檢查,它確保了目錄中所有的條目數據結構都是一致的。
schema(一般在/etc/ldap/schema/目錄)在導入時要注意前后順序。
過濾器和語法
- (&(A)(B)) 表示 A 與 B
- 或使用"|"標識
- 非使用 "!" 表示