25.2. Struktura adresářového stromu LDAP

LDAP adresář má stromovou strukturu. Všechny záznamy (zvané objekty) adresáře mají v hierarchii jasně definovanou pozici. Tato struktura je označována jako informační adresářový strom (DIT, directory information tree). Kompletní cesta k určité položce se nazývá jedinečné jméno nebo-li DN (distinguished name). Jednotlivé nody této cesty se nazývají relativní jedinečné jméno nebo-li RDN (relative distinguished name). Objekty mohou být dvou typů:

kontejner

Tyto objekty mohou obsahovat další objekty. Mezi tyto objekty patří root (kořenový element adresářového stromu), c (country, země), ou (organizational unit, organizační jednotka) a dc (domain component, doménová komponenta).

list

Tyto objekty se nalézají na samém okraji větve a nemají žádné podobjekty. Jde např. o person, InetOrgPerson nebo groupofNames.

Na samém vrcholu adresářové struktury stojí objekt root. Ten obsahuje podobjekty c (country), dc (domain component) nebo o (organization). Vztahy mezi objekty v LDAP stromu jsou zřejmé z obrázku 25.1 – „Struktura LDAP adresáře“.

Obrázek 25.1. Struktura LDAP adresáře

Struktura LDAP adresáře

Diagram obsahuje fiktivní informační adresářový strom. Každý obdélník na obrázku představuje jeden záznam. Úplné validní jedinečné jméno (DN) smyšleného SUSE zaměstnance jménem Geeko Linux je v našem případě cn=Geeko Linux,ou=doc,dc=suse,dc=de. Je vytvořeno přidáním RDN cn=Geeko Linux k DN předcházejícího záznamu ou=doc,dc=suse,dc=de.

Obecná pravidla určující, jaké typy objektů mají být ukládány v DIT, jsou daná tzv. schématem (scheme). Typ objektu je určen objektovou třídou. Objektová třída určuje vlastnosti, které objekt musí nebo může mít. Schéma proto musí obsahovat definici všech objektových tříd a atributů. K dispozici je několik obecných schémat (viz RFC 2252 a 2256). Samozřejmě je možné vytvořit si schéma vlastní, které bude více vyhovovat vašim požadavkům.

Tabulka 25.1 – „Běžně používané objektové třídy a atributy“ nabízí krátký přehled tříd objektů ze schémat core.schema a inetorgperson.schema použitých v příkladu. Najdete zde také atributy a platné hodnoty těchto atributů.

Tabulka 25.1. Běžně používané objektové třídy a atributy

Objektová třída

Význam

Příklad záznamu

Povinné atributy

dcObject

domainComponent (komponenta domény)

suse

dc

organizationalUnit

organizationalUnit (organizační jednotka)

doc

ou

inetOrgPerson

inetOrgPerson (osobní data pro intranet nebo internet)

Geeko Linux

sn a cn

Příklad 25.1 – „Výtah ze schema.core (řádky jsou dodatečně očíslovány)“ ukazuje výtah ze schématu s vysvětlením:

Příklad 25.1. Výtah ze schema.core (řádky jsou dodatečně očíslovány)


#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) )

Typ atributu organizationalUnitName a odpovídající objektová třída organizationalUnit zde slouží jako příklad. Řádka 1 obsahuje jméno atributu a jeho unikátní identifikátor OID (object identifier) (číselný údaj) a zkratku atributu.

Řádka 2 obsahuje krátký popis atributu (DESC). Je zde uveden i odkaz na příslušný RFC. SUP v řádce 3 uvádí nadřazený typ atributu, ke kterému tento atribut náleží.

Samotná definice objektové třídy organizationalUnit začíná na řádce 4. Stejně jako definice atributu obsahuje OID a jméno třídy. Na řádce 5 je krátký popis objektové třídy. Řádka 6 (SUP top) udává, že tato objektová třída není závislá na jiné objektové třídě. Řádka 7 začínající řetězcem MUST udává všechny atributy, které objekt typu organizationalUnit musí obsahovat. Řádka 8 začínající řetězcem MAY udává typy atributů, které mohou být s touto objektovou třídou používány.

Velmi hezký úvod do schémat najdete v dokumentaci OpenLDAP. Pokud je nainstalován, najdete ho v souboru /usr/share/doc/packages/openldap2/admin-guide/index.html.