天天看點

《Linux/UNIX OpenLDAP實戰指南》——1.4 OpenLDAP目錄條目概述

本節書摘來自異步社群《linux/unix openldap實戰指南》一書中的第1章,第1.4節,作者:郭大勇著,更多章節内容可以通路雲栖社群“異步社群”公衆号檢視

1.4.1 objectclass分類

objectclass類通常分三類:結構型、輔助型、抽象型。

結構型(structural):如person和organizationunit。

輔助型(auxiliary):如extensibleobject。

抽象型(abstract):如top,抽象型的objectclass不能直接使用。

1.4.2 openldap常見的objectclass

openldap常見的objectclass類如下所示。

alias

applicationentity

dsa

applicationprocess

bootabledevice

certificationauthority

certificationauthority-v2

country

crldistributionpoint

dcobject

device

dmd

domain

domainnameform

extensibleobject

groupofnames

groupofuniquenames

ieee802device

iphost

ipnetwork

ipprotocol

ipservice

locality

dclocalitynameform

nismap

nisnetgroup

nisobject

oncrpc

organization

dcorganizationnameform

organizationalrole

organizationalunit

dcorganizationalunitnameform

person

organizationalperson

inetorgperson

uidorganizationalpersonnameform

residentialperson

posixaccount

posixgroup

shadowaccount

strongauthenticationuser

uidobject

usersecurityinformation

如上對象類由openldap官方所提供,以滿足大部分企業的需求,openldap還支援系統所提供的對象類,例如sudo、samba等。後續章節将對企業中常用的對象類進行闡述并通過案例示範其實作過程,讓讀者熟悉其原理及實作過程。

當openldap官方以及系統提供的對象類無法滿足企業的特殊需求時,讀者可根據openldap schema内部結構制定schema規範并生成對象類,來滿足目前需求。

1.4.3 objectclass詳解

在openldap目錄樹中,每個條目必須包含一個屬于自身條件的對象類,然後再定義其條目屬性及對應的值。

openldap條目的屬性能否添加取決于條目所繼承的objectclass是否包含此屬性。objectclass具有繼承關系,也就是說,條目添加的屬性最終取決于自身所繼承的所有objectclass的集合。如果所添加的屬性不在objectclass範圍内,此時目錄伺服器不允許添加此屬性。如果要添加,就必須添加schema檔案産生objectclass所對應的屬性。objectclass和attribute由schema檔案來規定,存放在/etc/openldap/schema目錄下,schema檔案規範objectclass的構成以及屬性和值在目錄樹中的對應關系。後面章節會介紹如何通過定義schema檔案來産生objectclass,進而生成所需要的屬性。

每一個屬性和值将用作每個條目在目錄樹中存儲資訊的标準,例如能包含哪些屬性資訊。對于objectclass的了解,讀者可以将objectclass的屬性值了解為一種模闆。模闆定義哪些資訊可以存取,哪些資訊不可以存儲在目錄樹中。

1.4.4 objectclass案例分析

下面給出兩個對象類案例分析示例。

objectclass案例分析示例1

所有的objectclass定義都存放在/etc/openldap/schema/*.schema檔案中。例如,person屬性的定義就存放在core.schema檔案中。

分析:

如果要定義person類型,需要定義頂級為top,并且必須定義sn和cn兩個屬性,還可以附加userpassword、telephonenumber、seealso、description 4個屬性值。郵件位址、國家等屬性不可以定義,除非讀者添加相關的objectclass條目,否則提示相關屬性不允許添加。

對于此案例,如果要定義top屬性,必須定義一個objectclass屬性。因為此案例中還定義了person屬性,是以要必須定義sn和cn屬性,以及可以附加的屬性(userpassword、telephonenumber、seealso、description)。此案例中必須要定義的有3個屬性分别是objectclass、sn以及cn。通過此案例下一級的objectclass可以繼承上一級objectclass的屬性資訊。

注:

根據定義,對于不同的objectclass,屬性的相關資訊也不同。希望通過上面兩個案例的介紹,能讓讀者了解objectclass的含義以及屬性的含義。

繼續閱讀