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ů:
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).
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“.
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.