Dokumentáció/SL9.3/Szolgáltatások/LDAP – címtárszolgáltatás mindenkinek
Bevezetés
Hálózati környezetben rendkívül nagy jelentőségű a fontos adatok szervezettségének fenntartása és gyors elérése. Ebben segít egy címtárszolgáltatás, amely – hasonlóan például a szaknévsorhoz – az adatokat jól szervezett, gyorsan kereshető formában teszi elérhetővé.
Ideális esetben egy központi szerver tárolja az adatokat egy címtárban és osztja szét a klienseknek egy meghatározott protokoll segítségével. Az adatok úgy vannak szervezve, hogy az alkalmazások széles skálája számára elérhetők legyenek. Nem kell tehát minden egyes naptárprogramhoz és e-mail klienshez külön adatbázist fenntartani – elegendő egyetlen, jól karbantartott központi adattárat használni. Így sokkal kisebb fáradsággal, sokkal pontosabban karbantarthatók az adatok. Az LDAP-hoz hasonló nyílt, szabványos protokollok használata segít abban, hogy a lehető legtöbb kliensalkalmazás képes legyen az adatok elérésére.
Címtár alatt egy gyors, kifejezetten a hatékony olvasásra és keresésre optimalizált adatbázistípust értünk:
- A sok (egyidejű) olvasási hozzáférés érdekében az írási hozzáférés csekély számú frissítésre van korlátozva. Emlékeztetőül: a hagyományos adatbázisokat arra optimalizálják, hogy rövid idő alatt a lehető legnagyobb adatmennyiséget legyenek képesek fogadni.
- Az írási hozzáférés korlátozása azért nem számít komoly megszorításnak, mert a címtárszolgáltatásokat többnyire ritkán változó, statikus jellegű adatok tárolására és kiszolgálására használják. A hagyományos adatbázisokban tárolt adatok általában jóval gyakrabban változnak (dinamikus adatok). A vállalati címjegyzék telefonszámai sokkal ritkábban változnak, mint például a könyvelés adatai.
- Statikus adatok karbantartásakor ritkán kell frissíteni a meglévő adatokat. Dinamikus adatok használatakor – különösen, ha például bankszámlákról vagy könyvelésről van szó – az adatok konzisztenciája az elsődleges szempont. Egy pénzügyi műveletnél például nem elég, hogy az egyik fél számláját ugyanannyival növeljük, mint amennyivel a másikét csökkentjük: a műveleteket egyidejűleg kell végrehajtani egy tranzakción belül, hogy még a rendszer esetleges meghibásodása esetén se boruljon fel az elszámolás (és senki ne legyen megkárosítva). Az adatbázisok egyik legfontosabb funkciója az ilyen tranzakciók támogatása. A címtáraknál nem a tranzakciókon van a fő hangsúly. A címtárak szokásos felhasználási módjaiban nem jelent problémát az adatok rövid ideig tartó inkonzisztenciája.
A címtárszolgáltatások – például az LDAP – felépítése nem az összetett frissítési vagy lekérdezési mechanizmusokra lett optimalizálva. A fő szempont a gyors és egyszerű hozzáférés biztosítása a szolgáltatást kérő alkalmazások számára.
Számos címtárszolgáltatás létezett korábban is és létezik továbbra is, UNIX alatt ugyanúgy, mint és más rendszereken. A Novell NDS, a Microsoft ADS, a Banyan StreetTalk és az OSI-szabvány X.500, csak hogy néhány példát említsünk. Az LDAP célja eredetileg a DAP – az X.500 címtárhozzáférési protokolljának – leegyszerűsítése volt. Az X.500 szabvány címtárbejegyzések hierarchikus szervezéséről szól.
Az LDAP a DAP radikálisan leegyszerűsített, TCP/IP alá készült változata. Az LDAP célja az volt, hogy megtartsa a DAP legfontosabb részeit, de elhagyjon mindent, ami felesleges: az X.500 bejegyzések hierarchiájának megőrzése mellett az LDAP használatával erőforrások takaríthatók meg. A TCP/IP használata pedig jelentősen leegyszerűsíti az alkalmazás és az LDAP-szolgáltatás közötti felületek kialakítását.
Időközben az LDAP továbbfejlődött és egyre több helyen alkalmazták önálló megoldásként, X.500 támogatás nélkül. Az LDAP 3-as verziója (LDAPv3, az openldap2 csomag által is támogatott protokollverzió) már támogatja a hivatkozások (referral) használatát, ami lehetővé teszi elosztott adatbázisok készítését. Az SASL (simple authentication and security layer, egyszerű hitelesítési és biztonsági réteg) használata szintén új.
Az LDAP már régóta nincs arra korlátozva, hogy az adatokat X.500 címtárszerverekről kérje le, mint azt eredetileg tervezték. Létezik egy nyílt forráskódú szerver, az slapd, ami képes az objektumadatok tárolására egy helyi adatbázisban. Van továbbá egy slurpd nevű kiegészítés is, ami több LDAP-szerver replikálásáért felelős. Végül a korábban említett címtárak is kivétel nélkül biztosítanak mára LDAP-n keresztüli hozzáférést.
Az openldap2 csomag részei:
- slapd
- Egy önálló LDAPv3-szerver, amely egy BerkeleyDB alapú adatbázisban tárolja az objektumadatokat.
- slurpd
- Ez a program lehetővé teszi a helyi LDAP-szerveren lévő adatok módosításainak átvezetését (»replikálását«) a hálózat többi LDAP-szervereire.
- kiegészítő eszközök rendszerkarbantartáshoz
- slapcat, slapadd, slapindex
LDAP vagy NIS?
UNIX-rendszereken hagyományosan a NIS nevű szolgáltatást használják a névfeloldáshoz és az adatok szétosztásához a hálózatban. Az /etc könyvtárban lévő fájlok és a group, hosts, mail, netgroup, networks, passwd, printcap, protocols, rpc, valamint services könyvtárak konfigurációs adatait a kliensek osztják szét a hálózatban. Ezek a fájlok könnyedén karbantarthatók, hiszen egyszerű szövegfájlok. Nagyobb mennyiségű adat kezelése azonban jóval bonyolultabb, ugyanis a NIS-ben nincs különösebb strukturáltság. A NIS-t kifejezetten UNIX-platformokhoz tervezték, ezért nem használható központi adatkezelőként egy heterogén hálózatban.
Szemben a NIS-sel, az LDAP használata nem korlátozódik tisztán UNIX-hálózatokra. A windowsos szerverek (a Windows 2000 óta) támogatják az LDAP felhasználását címtárszolgáltatásként. A Novell szintén biztosít LDAP-szolgáltatást. A fent említett alkalmazásfeladatok nem UNIX-rendszereken is támogatottak.
Az LDAP alapelve minden központilag felügyelendő adatstruktúrára alkalmazható. Néhány példaalkalmazás:
- Alkalmazás a NIS szolgáltatás kiváltására
- Levéltovábbítás (postfix, sendmail)
- Címjegyzék levelezőprogramokhoz (például Mozilla, Evolution vagy Outlook)
- BIND9 névszerver zónaleírásának adminisztrációja
A lista szabadon bővíthető, ugyanis az LDAP, szemben a NIS-sel, szabadon kiterjeszthető. A világosan definiált adatstruktúra leegyszerűsíti a nagy adathalmazok kezelését, mert könnyebbé és hatékonyabbá teszi a kereséseket.
Az LDAP-címtárfa szerkezete
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 objektumoknak nagyon sokféle osztálya lehet, de két fő típusba tartozhatnak:- tároló (konténer)
- 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).
- levél
- 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) vagy groupofNames (nevek csoportja).A címtárhierarcia legtetején a root gyökérelem található. 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 (Az LDAP-címtárfa 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=suse,dc=de. 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=suse,dc=de). A teljes név, főleg a hosszabbak bonyolultnak hatnak, de ugyanolyan logikus a felépítése, mint a fájlrendszer egy teljesen megadott elérési útjáé; a különbség, hogy itt az egyes szintek típusát is kiírjuk, illetve hogy más az elválasztó karakter.
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-szervernek működnie kell.
Az Általánosan használt objektumosztályok és attribútumok táblázat röviden bemutatja a példában használt core.schema és inetorgperson.schema objektumosztályokat, a kötelező attribútumaikat és az attribútumok érvényes értékeit.
Objektumosztály | Jelentés | Példabejegyzés | Kötelező attribútumok |
---|---|---|---|
dcObject | domainComponent (tartomány-névkomponensek) | suse | dc |
organizationalUnit | organizationalUnit (szervezeti egység) | doc | ou |
inetOrgPerson | inetOrgPerson (intranetes vagy internetes személyes adatok) | Geeko Linux | sn és cn |
A schema.core kivonata (sorszámozás csak a magyarázat érdekében) a sémadirektíva egy részét mutatja be, magyarázatokkal együtt:
Példa: A schema.core kivonata (sorszámozás csak a magyarázat érdekében)
#1 attributetype (2.5.4.11 NAME ( 'ou' 'organizationalUnitName') #2 DESC 'RFC2256: a szervezeti egység, amelyhez az objektum tartozik: ' #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 tartalmazza.
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.
Szerverbeállítás az slapd.conf segítségével
A telepített rendszer egy teljes konfigurációs fájlt is biztosít az LDAP szerverhez az /etc/openldap/slapd.conf fájlban. Ebben megtalálja az egyes bejegyzések rövid leírását és a szükséges beállítások magyarázatát. A kettőskereszt (#) karakter mögötti bejegyzések inaktívak. Aktiválásukhoz ki kell törölni a megjegyzés karaktert.Globális utasítások az slapd.conf fájlban
Példa: Sémadirektívák megadása
include /etc/openldap/schema/core.schema include /etc/openldap/schema/inetorgperson.schema
Az slapd.conf fájl első utasítása (slapd.conf: Sémadirektívák megadása) megadja a sémát, amely szerint az LDAP-címtár szerveződik. A core.schema bejegyzés kötelező. A szükséges további sémák hozzáfűzésre kerülnek ehhez az direktívához (itt az inetorgperson.schema van példaként hozzáadva). További sémák az /etc/openldap/schema könyvtárban találhatók. Az NIS hasonló LDAP-szolgáltatás kiváltásához adja meg az rfc2307.schema és a cosine.schema sémát. Ezzel kapcsolatban további tájékoztatás található az OpenLDAP dokumentációban.
Példa: slapd.conf: pidfile és argsfile
pidfile /var/run/slapd/slapd.pid argsfile /var/run/slapd/slapd.args
Ez a két fájl tartalmazza a PID folyamatazonosítót és még néhány argumentumot az slapd folyamat elindításához. Itt nincs szükség módosításokra.
A slapd.conf: Hozzáférés-vezérlés az LDAP-címtár hozzáférési jogosultságait szabályozó slapd.conf fájlból mutat egy részletet.
# Hozzáférés-vezérlési példa # A gyökér DSE olvasási hozzáférésének engedélyezése # Saját írás hozzáférés engedélyezése # Hitelesített felhasználói írás hozzáférés engedélyezése # Anonim felhasználói hitelesítés engedélyezése # access to dn="" by * read access to * by self write by users read by anonymous auth # # ha nincs hozzáférés-vezérlés, akkor az alapértelmezett az alábbi: # Allow read by all # # a rootdn mindig írhat!
Az slapd.conf globális részében megadott beállítások addig érvényesek, amíg az adatbázis-specifikus részben nincs egyedi hozzáférési szabály megadva. Ez felülírja a globális deklarációkat. Amint itt látható, minden felhasználó rendelkezik olvasási jogosultsággal a címtárhoz, de csak az adminisztrátor (rootdn) tud írni ebbe a címtárba. Az LDAP hozzáférés-vezérlésének szabályozása rendkívül összetett folyamat. Az alábbiak támpontot nyújthatnak a megértéséhez:
- A hozzáférési szabályok szerkezete így néz ki:
access to <mit> by <ki> <hozzáférés>
- A mit azt az objektumot vagy attribútumot jelképezi, amelyhez a hozzáférési jogosultságot adjuk. Az egyes címtárágak külön szabályok segítségével explicit módon védhetők. Reguláris kifejezések használatával egy szabállyal a címtárfa egész területei is feldolgozhatók. Az slapd minden szabályt abban a sorrendben értékel ki, ahogy fel vannak sorolva a konfigurációs fájlban. Az általánosabb szabályokat a speciálisabbak után kell megjeleníteni – ha ugyanis az első szabályt az slapd érvényesnek találja, akkor kiértékeli és az összes következő bejegyzést figyelmen kívül hagyja.
- A ki elem azt jelzi, hogy kinek kell hozzáférést adni a mit által jelzett területhez. Itt is használhatók reguláris kifejezések. Az slapd szintén befejezi a ki elem kiértékelését az első egyezés után, ezért a speciálisabb szabályokat az általánosabbak elé kell írni. A Felhasználói csoportok és hozzáférési jogaik bemutatja a lehetséges bejegyzéseket.
Címke | Hatókör |
---|---|
* | az összes felhasználó kivétel nélkül |
anonymous | nem hitelesített (»anonim«) felhasználók |
users | hitelesített felhasználók |
self | a célobjektumhoz csatlakozó felhasználók |
dn.regex=<regex> | a reguláris kefejezésnek megfelelő felhasználók |
- A hozzáférés elem a hozzáférés típusát adja meg. A Hozzáférés típusa felsorolja az itt megadható jogosultságokat.
- Az slapd parancs összeveti a kliens által kért hozzáférési jogokat az slapd.conf fájlban megadottakkal. A kliens akkor kapja meg a hozzáférést, ha a szabályok a kérttel egyenlő vagy magasabb jogosultságokat engedélyeznek. Ha a kliens magasabb jogosultságokat kér, mint amelyet a szabályok engedélyeznek, akkor nem kap hozzáférést.
Címke | Hozzáférés hatóköre |
---|---|
egyik sem | nincs hozzáférés |
auth | a szerverhez kapcsolódás |
compare | objektumokhoz összehasonlítás érdekében |
search | keresési szűrők alkalmazásához |
read | olvasási hozzáférés |
write | írási hozzáférés |
A következő részben (slapd.conf: Példa a hozzáférés-vezérlésre) egy egyszerű hozzáférés-vezérlési példa látható, amely reguláris kifejezések segítségével tetszőlegesen bővíthető.
slapd.conf: Példa a hozzáférés-vezérlésre
access to dn.regex="ou=([^,]+),dc=suse,dc=de" by dn.regex="cn=administrator,ou=$1,dc=suse,dc=de" write by user read by * none
A szabály azt mondja, hogy csak a megfelelő adminisztrátor rendelkezik írási hozzáféréssel egy bizonyos ou bejegyzéshez. A hitelesített felhasználók olvasási jogosultsággal rendelkeznek, mások pedig semmilyen hozzáférést nem kapnak.
Részletes leírást és az LDAP hozzáférési jogok példakonfigurációját a telepített openldap2 csomag online dokumentációja tartalmazza.
Azon túl, hogy a hozzáférési jogosultságok a központi szerverkonfigurációs fájllal (slapd.conf) szabályozhatók, létezik az úgynevezett ACI (access control information, hozzáférésvezérlési információ) is. Az ACI lehetővé teszi, hogy az egyes objektumok hozzáférési adatai magában az LDAP-fában kerüljön tárolásra. Ez a fajta hozzáférés-vezérlés még nem általános, a fejlesztők továbbra is kísérletinek tekintik. További információ a http://www.openldap.org/faq/data/cache/758.html címen olvasható.
Adatbázis-specifikus direktívák az slapd.conf fájlban
Példa: slapd.conf Adatbázis-specifikus direktívák
database ldbm suffix "dc=suse,dc=de" rootdn "cn=admin,dc=suse,dc=de" # A nyílt szövegű jelszavakat, különösen rootdn esetén # kerülni kell. Lásd slappasswd(8) és slapd.conf(5). # Erős hitelesítés használata javasolt. rootpw secret # Az adatbázis-címtárnak léteznie KELL az slapd futtatása előtt ÉS # csak az slapd/tools érheti el. A 700-as mód javasolt. directory /var/lib/ldap # Fenntartandó indexek index objectClass eq
Az adatbázis típusát – ebben az esetben LDBM – a szakasz első sora határozza meg (lásd: slapd.conf: Adatbázis-specifikus direktívák). A második sorban a suffix (utótag) határozza meg, hogy a szerver az LDAP-fa mely részéért felelős. Az ezután következő rootdn határozza meg, hogy kinek van a szerverhez adminisztrátori jogosultsága. Az itt megadott felhasználónak nem kell LDAP-bejegyzéssel rendelkeznie, illetve nem kell léteznie normál felhasználóként. Az adminisztrátor jelszavát a rootpw utasítással lehet megadni. A jelszó (secret) direkt beírása helyett megadható az adminisztrátori jelszó kivonata (hash) is, az slappasswd direktíva használatával. A directory direktíva jelzi azt a könyvtárat (a fájlrendszerben), ahol a szerver az adatbáziskönyvtárakat tárolja. Az utolsó utasítás, az index objectClass eq azt jelenti, hogy index készül az összes objektumosztályhoz. Itt adhatók meg – a tapasztalatnak megfelelően – azok az attribútumok, amelyekre a felhasználók a leggyakrabban keresnek. Az adatbázishoz a globális hozzáférési szabályok helyett az itt megadott egyedi hozzáférési szabályok kerülnek alkalmazásra.
Szerverek elindítása és leállítása
Ha az LDAP-szerver teljesen be van állítva és az összes kívánt bejegyzés megadásra került a lenti mintának megfelelően (Adatkezelés az LDAP-címtárban), akkor root felhasználóként az rcldap start parancs kiadásával indítsa el az LDAP-szervert. A szerver kézi leállításához adja ki az rcldap stop parancsot. A futó LDAP-szerver állapota az rcldap status paranccsal kérhető le.
A YaST futásszint-szerkesztője (lásd: Rendszerszolgáltatások (futási szintek)) segítségével az LDAP-szerver rendszerindításkor és kikapcsoláskor automatikusan elindítható, illetve leállítható. A megfelelő hivatkozások az indítási és leállítási parancsfájlokhoz úgy is létrehozhatók, ha egy parancssorból kiadja az insserv parancsot (lásd: Init parancsfájlok készítése).
Adatkezelés az LDAP-címtárban
Az OpenLDAP többféle eszközt is biztosít az LDAP-címtárban található adatok felügyeletéhez. Az alábbiakban röviden bemutatjuk a négy legfontosabb eszközt (adatok bővítése, adatok törlése, adatok módosítása és keresés).
Adatok beszúrása egy LDAP-címtárba
Ha az LDAP-szerver konfigurációja az /etc/openldap/lsapd.conf fájlban megfelelő és készen áll a működésre (helyesen meg vannak adva a suffix, directory, rootdn, rootpw és index direktívák), akkor tovább lehet lépni a rekordok beírására. Az OpenLDAP ehhez a feladathoz az ldapadd parancsot biztosítja. Ha lehetséges, akkor (gyakorlati okokból) érdemes az objektumokat nagyobb adagokban hozzáadni az adatbázishoz. E célból jött létre az LDIF formátum (LDAP data interchange format, LDAP adatcsere-formátum). Az LDIF-fájlok egyszerű szövegfájlok, amelyek tetszőleges számú attribútum-érték párt tartalmaznak. A használható objektumosztályok és attribútumok az slapd.conf fájlban megadott sémafájlokból olvashatók ki. A korábbi példa (Az LDAP-címtárfa szerkezete) keretrendszerének létrehozásához szükséges LDIF-fájl valahogy így fog kinézni (Példa LDIF-fájlra):# A SUSE szervezet dn: dc=suse,dc=de objectClass: dcObject objectClass: organization o: SUSE AG dc: suse # A fejlesztés (devel) szervezeti egység dn: ou=devel,dc=suse,dc=de objectClass: organizationalUnit ou: devel # A dokumentációs (doc) szervezeti egység dn: ou=devel,dc=suse,dc=de objectClass: organizationalUnit ou: doc # A belső informatika (it) szervezeti egység dn: ou=it,dc=suse,dc=de objectClass: organizationalUnit ou: it
Mentse el a fájlt .ldif utótaggal, majd a következő paranccsal küldje tovább a szervernek:
ldapadd -x -D <az adminisztrátor dn-je> -W -f <fájl>.ldifA -x paraméter kikapcsolja az SASL alapú hitelesítést ebben az esetben. A -D a műveletet meghívó felhasználót adja meg. Az itt megadott érvényes adminisztrátori DN az slapd.conf fájlban megadottal kell, hogy megegyezzen. A jelen példában ez a cn=admin,dc=suse,dc=de. A -W elkerüli a jelszó parancssori (nyílt szövegű) megadását és külön jelszóbekérést eredményez. Ez a jelszó ugyanaz, mint amelyet korábban az slapd.conf fájlban kellett megadni a rootpw direktívával. A -f paraméter a fájlnevet adja át. Az ldapadd parancs futtatásának eredménye alább látható (Az ldapadd parancs futtatása az example.ldif fájllal).
Példa: Az ldapadd parancs futtatása az example.ldif fájllal
ldapadd -x -D cn=admin,dc=suse,dc=de -W -f example.ldif Adja meg az LDAP jelszót: adding new entry "dc=suse,dc=de" adding new entry "ou=devel,dc=suse,dc=de" adding new entry "ou=doc,dc=suse,dc=de" adding new entry "ou=it,dc=suse,dc=de"
Az egyes személyek felhasználói adatai külön LDIF-fájlokban készíthetők elő. A következő példa (Tux LDIF-adatai) a Tux elemet veszi fel az új LDAP-címtárba.
# Tux kolléga dn: cn=Tux Linux,ou=devel,dc=suse,dc=de objectClass: inetOrgPerson cn: Tux Linux givenName: Tux sn: Linux mail: tux@suse.de uid: tux telephoneNumber: +49 1234 567-8
Egy LDIF-fájl tetszőleges számú objektumot tartalmazhat. Akár teljes címtárágak is átküldhetők egyszerre a szerverre, vagy tetszés szerinti részek, amint azt az egyes objektumok példája mutatja. Ha bizonyos adatokat viszonylag gyakran kell módosítani, akkor érdemes felosztani az egyes objektumokat.
Az LDAP-címtár adatainak módosítása
A meglévő adathalmaz módosítására az ldapmodify eszköz szolgál. Az egyik legegyszerűbb megoldás a megfelelő LDIF-fájl módosítása, majd a módosított fájl átküldése az LDAP-szervernek. Ha Tux kolléga telefonszámát szeretnénk módosítani +49 1234 567-8-ról mondjuk +49 1234 567-10-re akkor át kell írni az LDIF-fájlt a következő példában látható módon (Módosított LDIF-fájl: tux.ldif).
Példa: Módosított LDIF-fájl: tux.ldif
# Tux kolléga dn: cn=Tux Linux,ou=devel,dc=suse,dc=de objectClass: modify replace: telephoneNumber telephoneNumber: +49 1234 567-10
Importálja a módosított fájlt az LDAP-címtárba a következő parancs segítségével:
ldapadd -x -D cn=admin,dc=suse,dc=de -W -f example.ldifAlternatív megoldásként a módosítandó attribútumokat közvetlenül is át lehet adni az ldapmodify parancsnak. Ennek módja:
- Indítsa el az ldapmodify parancsot és adja meg a jelszót:
ldapmodify -x -D cn=admin,dc=suse,dc=de -W Írja be az LDAP jelszót:
- Körültekintően, a szintaxisra ügyelve adja meg a módosításokat az alábbiakban megadott sorrendben:
dn: cn=Tux Linux,ou=devel,dc=suse,dc=de objectClass: modify replace: telephoneNumber telephoneNumber: +49 1234 567-10
Olvassa el az ldapmodify részletes leírását és szintaxisát a megfelelő kézikönyvoldalon (ldapmodify(1)).
Adatok keresése vagy olvasása egy LDAP-címtárból
Az OpenLDAP az ldapsearch paranccsal egy parancssori eszközt biztosít az LDAP-címtárban található adatok kereséséhez és kiolvasásához. Egy egyszerű lekérdezés az alábbi szintaxissal adható meg:ldapsearch -x -b dc=suse,dc=de "(objectClass=*)"
A -b paraméter a keresés alapját határozza meg – ez a fa azon részét jelenti, amelyben a keresést végre kell hajtani. Ebben az esetben ez a {{{1}}}. Ha csak az LDAP-címtár egy adott részében kíván végrehajtani részletesebb keresést (mondjuk csak a devel részlegen belül), akkor a -b paraméterrel ezt a szűkebb részt adja át az ldapsearch parancsnak. A -x paraméter egyszerű hitelesítés használatát kéri. Az {{{1}}} azt jelzi, hogy a címtárban lévő összes objektumot be kell olvasni. Ez a parancsparaméter egy új címtárfa létrehozása után használható annak ellenőrzésére, hogy az összes bejegyzés megfelelően rögzítésre került-e és a szerver a kívánt módon válaszol-e. Az ldapsearch parancs használatával kapcsolatban további információ a megfelelő kézikönyvoldalon (ldapsearch(1)) olvasható.
Adatok törlése egy LDAP-címtárból
Az ldapdelete parancs segítségével törölje a nem kívánt bejegyzéseket. A szintaxis a fent leírt parancsokéhoz hasonló. A Tux Linux teljes bejegyzésének törléséhez például adja ki az alábbi parancsot:ldapdelete -x -D cn=admin,dc=suse,dc=de -W cn=Tux \ Linux,ou=devel,dc=suse,dc=de
LDAP-szerverkonfiguráció a YaST segítségével
Az LDAP-szerver beállításához is használható a YaST. Az ilyen szerver nemcsak a felhasználói fiók adatait tudja kezelni, hanem egyéb adatokat is – például a levelezés, vagy akár a DNS- és DHCP-szerverek beállításait. A szerver beállítása erre a célra része a telepítési eljárásnak. A Hálózati szolgáltatások → LDAP-szerver menüpont segítségével indítsa el a megfelelő YaST modult.A megjelenő párbeszédablakban adja meg, hogy az LDAP-szervernek a rendszerindítás során el kell-e indulnia. A Beállítás elemre kattintva jut a tényleges konfigurációs párbeszédablakokba. Lásd: YaST OpenLDAP szerverkonfiguráció: Naplózási szint.
Az ablak baloldali részében megjelenik egy fanézet, amelyből kiválaszthatók az LDAP szerver konfigurációs beállításai. Ezek a következők: Általános beállítások (Naplózási szint beállítások, Beállítások engedélyezése és TLS-beállítások), valamint Adatbázis. Az ablak jobboldali része a fában aktuálisan kiválasztott elem konfigurációs párbeszédablakát jeleníti meg.
A Naplózási szint beállítások segítségével beállítható az LDAP-szerver naplózásának mértéke (részletessége). Az előre meghatározott listában válassza ki a kívánt naplózási beállításokat. Minél több beállítás van megjelölve, annál nagyobbak lesznek a naplófájlok.
A Beállítások engedélyezése részben adható meg, hogy milyen csatlakozási típusokat engedélyezzen az LDAP-szerver. Lásd: YaST OpenLDAP-szerverkonfiguráció: Engedélyezés.
Az egyes Engedélyezési jelzők jelentése a következő:
- bind_v2
- Ez az beállítás engedélyezi a kliens felől a protokoll előző verziójának (LDAPv2) használatával érkező kapcsolatkéréseket (bind kérések).
- bind_anon_cred
- Az LDAP-szerver alapesetben elutasít minden üres hitelesítési adatokkal (DN vagy jelszó) érkező hitelesítési kísérletetet. A beállítás engedélyezése lehetővé teszi a csatlakozást jelszóval, DN nélkül anonim kapcsolat létesítéséhez.
- bind_anon_dn
- A beállítás engedélyezése lehetővé teszi a hitelesítés nélküli (anonim) kapcsolódást DN használatával, de jelszó nélkül.
- update_anon
- A beállítás engedélyezi a hitelesítés nélküli (anonim) frissítési műveleteket. A hozzáférés az ACL-eknek és egyéb szabályoknak megfelelően van korlátozva (lásd: Globális utasítások az slapd.conf fájlban).Az engedélyezési (allow) jelzők módosítása után folytassa a TLS-beállítások megadásával, és határozza meg, hogyan kell biztonságossá tenni a szerver és a kliens közötti adatforgalmat. Lásd: YaST OpenLDAP-szerverkonfiguráció: TLS.
Először döntse el, hogy a szerver és kliens közötti adatforgalom használjon-e TLS- és SSL-titkosítást. Ezután nyomja meg a Tanúsítvány kiválasztása gombot egy tanúsítvány kiválasztásához. A megjelenő párbeszédablakban (YaST OpenLDAP-szerverkonfiguráció: Tanúsítvány kiválasztása) válassza ki a használni kívánt tanúsítvány típusát: A YaST automatikusan létrehozza a tanúsítványt a SUSE LINUX Enterprise Server telepítése során (Általános szervertanúsítvány használata), vagy az külső forrásból kerül importálásra (Tanúsítvány importálása). Ha a telepítés során nem készült általános szervertanúsítvány, akkor közvetlenül egy importálási párbeszédablakba jut.
Ha tanúsítványt kíván importálni, akkor a YaST-ban meg kell adni a megfelelő fájl, kulcsfájl és a CA tanúsítvány nevét és elérési útját (YaST OpenLDAP-szerverkonfiguráció: Tanúsítvány importálása). Ezek megadása után az OK gombra kattintva hagyja el a párbeszédablakot.
Az LDAP-szerver általános konfigurációjának befejezése után állítsa be azokat az adatbázisokat, amelyeket a szerver kezelni fog. Ehhez a fában válassza ki az Adatbázisok bejegyzést. Az ablak jobboldali részében meg kell jelennie a rendelkezésre álló adatbázisok listájának (YaST OpenLDAP-szerverkonfiguráció: Rendelkezésre álló adatbázisok). Új elem hozzáadásához nyomja meg az Adatbázis hozzáadása gombot.
A YaST megjelenít egy párbeszédablakot a szükséges bejegyzések megadásához (YaST OpenLDAP-szerverkonfiguráció: Új adatbázis). Az Alap DN pontban adja meg az LDAP-szerver alap DN-jét. A Root DN pontban adja meg a szerverért felelős adminisztrátor DN-jét. Ha bejelöli az Alap DN hozzáfűzése lehetőséget, akkor csak az adminisztrátor cn-jét adja meg, a rendszer a többit automatikusan kitölti. Végül adja meg a szerveradminisztrátor jelszavát és válassza ki a jelszótitkosításhoz használandó algorimtust (crypt, smd5, ssha vagy sha). A beállítások megerősítéséhez és az előző párbeszédablakhoz visszatéréshez kattintson az OK gombra.
A korábban létrehozott adatbázis szerkesztéséhez a baloldali fában válassza ki az alap DN-t. Az ablak jobb oldalán a YaST megjelenít egy, az új adatbázis létrehozásához használthoz hasonló párbeszédablakot – azzal a jelentős különbséggel, hogy az alap azonosító nem módosítható, így szürkével jelenik meg. Lásd: YaST OpenLDAP-szerverkonfiguráció: Adatbázis szerkesztése.
Miután a Kilépés gombra kattintva elhagyta a párbeszédablakot, az LDAP-szerver alapszintű konfigurációja készen áll a használatra. A beállítás finomhangolásához módosítsa az /etc/openldap/slapd.conf fájlt, majd indítsa újra a szervert.
A YaST LDAP-kliens
A YaST-nak része egy modul az LDAP alapú felhasználói felügyelet beállításához. Ha ezt a modult telepítés során nem engedélyezte, akkor a Hálózati szolgáltatások → LDAP kliens menüpont kiválasztásával indítsa el. A YaST automatikusan engedélyezi a PAM és NSS megfelelő módosításait, amelyekre az LDAP használatához szükség van (a leírást lásd a következőkben), és telepíti a szükséges fájlokat.Szokásos eljárás
Ahhoz, hogy megértsük, hogyan működik a YaST LDAP-kliensmodulja, ismerni kell a kliensgép háttérben működő folyamatait is. Ha az LDAP be lett kapcsolva a hálózati hitelesítéshez vagy a YaST-modul meghívásra került, akkor a rendszer telepítette a pam_ldap és az nss_ldap csomagot, és módosította a két vonatkozó konfigurációs fájlt. A pam_ldap a bejelentkezési folyamat és az LDAP-címtár – mint a hitelesítési adatok forrása – közötti egyeztetésért felelős PAM-modul. Telepítésre került a dedikált pam_ldap.so modul és megtörténtek a szükséges módosítások a PAM-konfiguráción (lásd: Az LDAP-hoz átalakított pam_unix2.conf).
Példa: Az LDAP-hoz átalakított pam_unix2.conf
auth: use_ldap nullok account: use_ldap password: use_ldap nullok session: none
Ha kézzel állít be további szolgáltatásokat az LDAP használatára, akkor adja meg a PAM LDAP-modult az /etc/pam.d könyvtárban, a szolgáltatásnak megfelelő a PAM konfigurációs fájlban. Az /usr/share/doc/packages/pam_ldap/pam.d/ könyvtárban találhatók bizonyos szolgáltatásokhoz már átalakított konfigurációs fájlok. Másolja át a megfelelő fájlokat az /etc/pam.d könyvtárba.
Az nsswitch mechanizmuson keresztüli glibc-névfeloldás hozzá lett alakítva az LDAP használatához az nss_ldap segítségével. A csomag telepítése után egy új, megfelelően módosított nsswitch.conf fájl jön létre az /etc/ könyvtárban. Az nsswitch.conf működésével kapcsolatban további információ: Konfigurációs fájlok. Az alábbi soroknak szerepelniük kell az nsswitch.conf fájlban az LDAP-n keresztüli felhasználói adminisztrációhoz és hitelesítéshez (Módosítások az nsswitch.conf fájlban).
Példa: Módosítások az nsswitch.conf fájlban
passwd: compat group: compat passwd_compat: ldap group_compat: ldap
Ezek a sorok először meghívják a glibc feloldó függvénytárát az /etc könyvtár megfelelő fájljainak kiértékeléséhez, valamint a hitelesítési és felhasználói adatok forrásaként elérik az LDAP-szervert is. Próbálja ki a mechanizmust például a felhasználói adatbázis elolvasásával, a getent [passwd parancs segítségével. A visszaadott halmaznak tartalmaznia kell a rendszer helyi felhasználóinak, valamint az LDAP-szerveren tárolt összes felhasználónak az adatait.
Annak megakadályozására, hogy az LDAP-n keresztül felügyelt felhasználók az ssh vagy login paranccsal bejelentkezzenek a szerverre, az /etc/passwd és/etc/group fájlnak tartalmaznia kell egy további sort. Az /etc/passwd fájlban ez a sor +::::::/sbin/nologin, az /etc/group fájlban pedig +:::.
Az LDAP-kliens beállítása
Miután a YaST a szükséges módon módosította az nss_ldap, pam_ldap, /etc/passwd és /etc/group fájlokat, az első YaST párbeszédablakban megkezdődhet a tényleges beállítás (YaST: Az LDAP-kliens beállítása).Az első párbeszédablakban jelölje meg, hogy az LDAP-t kívánja használni a felhasználók hitelesítéséhez. Adja meg a szerveren az LDAP alap DN mezőben a címtárfa azon objektumát, amely alatt az összes adat tárolásra kerül majd az LDAP-szerveren. Az LDAP-szerverek címe mezőben adja meg az LDAP-szerver(ek) elérési címét. A távoli gépeken a könyvtárak automatikus felcsatolásához jelölje meg az Az automounter aktiválása négyzetet. A szerver adatainak módosításához adminisztrátor felhasználóként kattintson a Szakértői beállítások gombra (YaST: Szakértői beállítások).
A következő párbeszédablak két részből áll: A felső részben adja meg a felhasználók és csoportok általános beállításait, amelyeket a YaST felhasználói modulja is tükröz. Az alsó részben pedig adja meg az LDAP-szerver eléréséhez szükséges adatokat. A felhasználói és csoportbeállítások az alábbi elemeket tartalmazzák:
- Fájlszerver
- Ha az aktuális rendszer egy fájlszerver és a /home könyvtár tartalmazza az egyes felhasználók könyvtárait, akkor e négyzet megjelölésével a YaST-modul megfelelően tudja kezelni a felhasználói könyvtárakat.
- LDAP-felhasználók bejelentkezhetnek
- Ezt a beállítást megjelölve az LDAP-n keresztül felügyelt felhasználók jogosultságot kapnak a rendszerre bejelentkezéshez.
- Csoporttag attribútum
- Itt adható meg a használni kívánt LDAP-csoport típusa: member (ez az alapértelmezett beállítás) vagy uniquemember.Adja meg az LDAP-szerver beállításainak módosításához szükséges hozzáférési adatokat. Ezek a Beállítás alap DN (amely alatt az összes konfigurációs objektum található) és az Adminisztrátor DN-je.
Az LDAP-szerver bejegyzéseinek módosításához kattintson a Felhasználókezelési konfiguráció beállítása gombra. A megjelenő párbeszédablakban adja meg az LDAP-jelszót a szerverhez hitelesítéshez. A szerver konfigurációs moduljainak hozzáférési jogosultságai ekkor kiosztásra kerülnek a szerveren tárolt ACL-eknek és ACI-knek megfelelően.
A Modul beállítása párbeszédablakban (YaST: Modul beállítása) lehet kiválasztani és módosítani a meglévő konfigurációs modulokat, újakat létrehozni, illetve itt tervezhetők meg és módosíthatók a modulok sablonjai. A konfigurációs modulban egy érték módosításához vagy egy modul átnevezéséhez válassza ki a modultípust az aktuális modul tartalomnézete felett látható listából. A tartalomnézetben ezután megjelenik egy táblázat, amely felsorolja a modul összes engedélyezett attribútumát a hozzájuk rendelt értékekkel. A lista a ténylegesen beállított attribútumokon túl az aktuális séma által engedélyezett, de pillanatnyilag nem használt attribútumokat is tartalmazza.
Egy modul átmásolásához csak a cn értéket kell módosítani. Az egyes attribútumértékek módosításához válassza ki a tartalomlista kívánt elemét és kattintson a Szerkesztés gombra. Megjelenik egy párbeszédablak, amelyben módosítani lehet az attribútum beállításait. Az OK gombbal fogadja el a módosításokat.
Ha új modult kell felvenni a meglévők közé, akkor kattintson a tartalomablak fölötti Új gombra. A megjelenő párbeszédablakban (suseuserconfiguration vagy susegroupconfiguration) adja meg az új modul objektumosztályát és nevét. Miután az OK gombbal bezárta a párbeszédablakot, az új modul hozzáadódik a meglévő modulok listájához és onnan szabadon kiválasztható. A kijelölt modul törléséhez kattintson a Törlés gombra.
A csoport- és felhasználóadminisztrációra szolgáló YaST-modulok szabványos értékekkel rendelkező sablonokat ágyaznak be, ha ezek az értékek korábban meg lettek adva a YaST LDAP-kliensben. A sablon módosításához kattintson a Sablon beállítása gombra. A megjelenő menü a már meglévő, módosítható sablonokat vagy csak egy üres bejegyzést tartalmaz. Válasszon ki egyet, majd az Objektumsablon beállítása űrlapon adja meg a sablon tulajdonságait (YaST: Objektumsablon beállítása). Ez az űrlap két táblázatos formájú áttekintő ablakot tartalmaz. A felső ablak az általános sablonattribútumokat jeleníti meg. Adja meg a kívánt értékeket, vagy hagyja egy részüket üresen. Az üres attribútumok az LDAP-szerveren törlésre kerülnek.
A második nézet (Új objektumok alapértelmezett értékei) megjeleníti a vonatkozó LDAP-objektum összes olyan attribútumát (ebben az esetben csoport- vagy felhasználói beállításait), amelyekhez van alapérték megadva. Felvehetők további attribútumok és alapértékek, módosíthatók a meglévő attribútum-érték párok és akár teljes attribútumok törölhetők. A cn bejegyzés módosításával másoljon át egy sablont. Csatlakoztassa a sablont a moduljához a már korábban leírt módon: állítsa a modul susedefaulttemplate attribútumának értékét a módosított sablon DN-jére.
Ha az összes modul és sablon megfelelően be van állítva és futásra kész, akkor a YaST segítségével az új csoportok és felhasználók a szokásos módon bejegyezhetők.
Felhasználók és csoportok – beállítás a YaST segítségével
A felhasználói és csoportadatok tényleges bejegyzése alig különbözik az LDAP használata nélküli esetben használt eljárástól. A felhasználók adminisztrációját alábbi részben található, a csoportok adminisztrálásának folyamata hasonló.A Biztonság és felhasználók → Felhasználók létrehozása és módosítása menüpont segítségével nyissa meg a YaST felhasználói adminisztrációs részét. Megjelenik egy beviteli űrlap a legfontosabb felhasználói adatok – például a név és bejelentkezési jelszó – bejegyzéséhez. A Részletek lapon módosítható a csoporttagság, a bejelentkezési parancsértelmező és a saját könyvtár. Az alapértelmezett értékek az előző részben (Az LDAP-kliens beállítása) lettek megadva. LDAP használata esetén ez az űrlap egy másik űrlaphoz vezet az LDAP-specifikus attribútumok bejegyzése érdekében. (Lásd: YaST: További LDAP-beállítások). Válassza ki az összes attribútumot, amelynek értékét módosítani kell, majd kattintson a Szerkesztés gombra. A Tovább gomb megnyomására megnyíló űrlap bezárása után visszakerül a felhasználói adminisztráció kezdő beviteli űrlapjához.
A felhasználói adminisztráció kezdő beviteli űrlapja LDAP-beállításokat kínál. Itt LDAP keresési szűrőket lehet alkalmazni a rendelkezésre álló felhasználók halmazára, illetve az LDAP felhasználói és csoportkonfiguráció kiválasztásával az LDAP felhasználók és csoportok konfigurációs moduljára lehet ugrani.
További információ
A fejezetben szándékosan nem esett szó bonyolultabb esetekről – például az SASL beállításáról vagy egy replikációt végző LDAP-szerver üzembe helyezéséről, amely több alárendelt rendszer között osztja el a terhelést. A fenti témákkal kapcsolatban bővebb információt talál az OpenLDAP 2.2 adminisztrátori kézikönyvben (lásd az alábbi hivatkozásokat).
Az OpenLDAP projekt webhelye átfogó dokumentációt biztosít kezdő és tapasztalt LDAP-felhaszálók számára egyaránt:
- OpenLDAP Faq-O-Matic
- Gazdag kérdés-válasz gyűjtemény az OpenLDAP telepítésével, beállításával és alkalmazásával kapcsolatban. http://www.openldap.org/faq/data/cache/1.html.
- Gyors üzembehelyezési segédlet
- Részletes útmutatás az első LDAP-szerver telepítéséhez:
- http://www.openldap.org/doc/admin22/quickstart.html, vagy a telepített rendszer /usr/share/doc/packages/openldap2/admin-guide/quickstart.html fájljában.
- OpenLDAP 2.2 adminisztrátori kézikönyv
- Az LDAP-konfiguráció lényeges aspektusairól szóló részletes bevezető, a hozzáférés-vezérlést és titkosítást is beleértve: http://www.openldap.org/doc/admin22/, vagy a telepített rendszer /usr/share/doc/packages/openldap2/admin-guide/index.html fájljában.Az IBM LDAP-val kapcsolatos Redbook-kiadványai:
- Understanding LDAP
- Részletes bevezető az LDAP alapelveibe: http://www.redbooks.ibm.com/redbooks/pdfs/sg244986.pdf.
- LDAP Implementation Cookbook
- A kiadványok célközönsége az IBM SecureWay Directory rendszergazdák. Az LDAP-val kapcsolatban azonban fontos általános információ található benne: http://www.redbooks.ibm.com/redbooks/pdfs/sg245110.pdf.Nyomtatott szakirodalom az LDAP-ról:
- Howes, Smith, and Good: Understanding and Deploying LDAP Directory Services. Addison-Wesley, 2nd ed., 2003. (ISBN 0-672-32316-8)
- Hodges: LDAP System Administration. O'Reilly & Associates, 2003 (ISBN 1-56592-00125-491).
- Az LDAP legmagasabb szintű referenciaanyagai a vonatkozó RFC-k (2251 - 2256).