Az LDAP-kiszolgáló működésének és az adattárolás módjának jobb megismeréséhez meg kell érteni a kiszolgáló adatszervezési módját, valamint azt, hogy a szerkezet segítségével az LDAP tudja biztosítani a szükséges adatok gyors elérését. Az LDAP-beállítás megfelelő működéséhez az alapvető LDAP-terminológiát ismernie kell. Ez a rész az LDAP-címtárfa alapvető elrendezését mutatja be, és bemutatja az LDAP-vel kapcsolatban használt legfontosabb kifejezéseket. Ha már ismeri valamennyire az LDAP-t és csak az LDAP-környezet SUSE Linux Enterprise rendszeren való beállításával kíván foglalkozni, akkor hagyja ki ezt a bevezető részt.
Az LDAP-címtárak faszerkezetre épülnek. A címtár minden bejegyzésének (objektumának) meghatározott helye van a hierarchiában. Ezt a hierarchiát az X.500 szabvány elnevezésével címtárinformációs fának (directory information tree, röviden DIT) hívjuk. A keresett bejegyzés teljes elérési útját, amely egyértelműen azonosítja, megkülönböztetett névnek vagy DN-nek (distinguished name) hívjuk. A bejegyzés elérési útja mentén lévő csomópontok neve relatív megkülönböztetett név vagy RDN (relative distinguished name). Az objektumok általában két fő típusba sorolhatók:
Ezek az objektumok maguk is tartalmazhatnak további objektumokat. Ilyen objektumosztályok a root (a címtárfa gyökéreleme, amely igazából nem is létezik), a c (ország), az ou (szervezeti egység) és a dc (tartománykomponens). A modell igazából nagyban hasonlít egy fájlrendszer könyvtáraira (mappáira).
Ezek az objektumok egy ág legvégén helyezkednek el, alattuk már nincsenek további objektumok. Néhány példa: person (személy), InetOrgPerson (személy kifejezetten internetes és vállalati attribútumokkal) és groupofNames (nevek csoportja).
A címtárhierarchia legtetején a root gyökérelem található: root. Ennek alárendelt elemei a következők lehetnek: c (country, ország), dc (domain component, tartománykomponens) vagy o (organization, szervezet). Az LDAP-címtárfa felépítését sokkal egyszerűbb egy ábrán bemutatni: 35.1. ábra - Az LDAP-címtár szerkezete.
Az ábrán egy képzeletbeli címtárinformációs fa látható. Három szinten láthatók bejegyzések. Minden bejegyzés a kép egy mezőjének felel meg. A képzeletbeli Geeko Linux nevű SUSE-alkalmazott teljes, érvényes megkülönböztetett neve ebben az esetben cn=Geeko Linux,ou=doc,dc=example,dc=com. Ez úgy keletkezik, hogy a cn=Geeko Linux RDN-hez (relatív megkülönböztetett névhez) hozzáadjuk az előző bejegyzés megkülönböztetett nevét (ou=doc,dc=example,dc=com).
Azt, hogy milyen típusú objektumok tárolhatók a DIT-ben, a séma határozza meg. Az objektum jellegét pedig az objektumosztály határozza meg. Az objektumosztály definiálja, hogy egy adott objektumnak milyen kötelező és opcionális attribútumai vannak. A sémának tehát minden, a kívánt alkalmazási helyzetben használt objektumosztály és attribútum definícióját tartalmaznia kell. Létezik néhány általános séma (lásd: RFC 2252 és 2256). Létrehozhatók azonban egyedi sémák is, illetve több, egymást kiegészítő séma is használható, ha ezt követeli meg a környezet, amelyben az LDAP-kiszolgálónak működnie kell.
A 35.1. táblázat - Általánosan használt objektumosztályok és attribútumok táblázat röviden bemutatja a példában használt a példában használt core.schema és inetorgperson.schema objektumosztályt, kötelező attribútumaikat és az attribútumok érvényes értékeit.
35.1. táblázat - Általánosan használt objektumosztályok és attribútumok
Objektumosztály | Jelentés | Példabejegyzés | Kötelező attribútumok |
|---|---|---|---|
dcObject | domainComponent (tartomány-névkomponensek) | példa | dc |
organizationalUnit | organizationalUnit (szervezeti egység) | doc | ou |
inetOrgPerson | inetOrgPerson (intranetes vagy internetes személyes adatok) | Geeko Linux | sn és cn |
A 35.1. példa - A schema.core kivonata a sémadirektíva egy részét mutatja be, magyarázatokkal együtt (sorszámozás csak a magyarázat érdekében).
35.1. példa - A schema.core kivonata
#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) )
...A példában az organizationalUnitName attribútumtípust és a hozzá tartozó organizationalUnit objektumosztályt tekintjük meg. Az 1. sor az attribútum nevét, az egyedi OID-t (numerikus objektumazonosító) és az attribútum rövidítését tartalmazz OID.
A 2. sor egy rövid leírást ad az attribútumról a DESC kulcsszó után. Megemlíti a vonatkozó RFC-t, amelyre a definíció épül. A 3. sorban a SUP kulcsszó jelzi a felsőbb szintű attribútumtípust, amelyhez ez az attribútum tartozik.
Az organizationalUnit objektumosztály definíciója a 4. sorban kezdődik, ugyanúgy, mint az attribútum definíciójában, egy OID-vel és az objektumosztály nevével. Az 5. sor az objektumosztály rövid leírását tartalmazza. A 6. sor a SUP top bejegyzéssel jelzi, hogy ez az objektumosztály nem másik osztály alárendeltje. A 7. sor a MUST kulcsszótól kezdődően felsorolja az összes olyan attribútumtípust, amelyet az organizationalUnit típusú objektumok esetében kötelező megadni. A 8. sor a MAY kulcsszótól kezdődően megjeleníti az összes attribútumtípust, amely az objektumosztályban használható.
A sémák használatáról egészen kiváló bevezetést olvashat az OpenLDAP dokumentációjában. Ha a csomag már telepítve van, akkor a dokumentáció az /usr/share/doc/packages/openldap2/admin-guide/index.html fájlban tekinthető meg.