LDAP

Jiří Syrový, xsyrovy@fi.muni.cz


Obsah


Co jsou to adresářové služby ?

Adresářovou službou se rozumí specializovaná aplikace pro ukládání dat, jejich organizaci a přístup k nim. Specifikum je především v datovém modelu, který je rámcem pro práci s daty. Nejjednodušší představa je taková, že data jsou uložena ve formě položek, přičemž každá položka obsahuje několik atributů. Atribut je nositelem dat, tj. má hodnotu. Jméno položky je strukturované, složené z hierarchicky uspořádaných částí. Logicky jsou takto položky v adresářových službách rozmístěny v hierarchické struktuře, adresářovém stromu.

Standardy adresářových služeb

Jako první musím zminit standard X.500, což je zkratka použiváná pro označení standardu adresářových služeb, který definují dokumenty X.500 až X.521. Standard X.500 je postaven na rodině protokolů ISO/OSI a je poměrně komplexní a standardní specifikace pro adresářovou organizaci dat a operace nad nimi. Obecně lze říci, že X.500 je vystavěn na architektuře klient/server, přičemž definuje protokol pro komunikaci mezi klientem a adresářovým serverem directory access protocol (DAP).

A LDAP ?

LDAP (Lightweight Directory Access Protocol) byl primárně navržen jako zjednodušená varianta protokolu DAP, tj. jako jednodušší přístupový protokol mezi klientem a adresářovým serverem (X.500). Hlavní zjednodušení tkví v použití rodiny protokolů TCP/IP jako komunikační vrstvy a ve zjednodušení protokolu jako celku (minimalizovány operace, vypuštěny složitější vlastnosti). V současné době pod pojmem LDAP nerozumíme pouze komunikační protokol, ale i vlastní adresářový server.

Verze LDAP

První verze protokolu vyžadovala ke svému provozu X.500 server, ale v dalších dvou verzích došlo k jeho osamostatnění a přidání dalších vlastností, které v protokolu X.500 vůbec nebyly. Verze 3 přidává oproti verzi 2 například podporu pro lepší autentizaci, podporu pro šifrování přenášených dat, podporu pro lokalizaci a další.


Jak to funguje ?

Protokol LDAP je postaven na modelu klient-server. LDAP server(y) obsahující data vytvářejí DIT strom. Klient se připojí a zadá požadavek. Server odpoví, buď přímo a nebo řekne, kde se má klient ptát (jiného LDAP serveru, ...). Pokud se klient může připojit na víc serveru, tak nezáleží, na který se přípojí, a vždy dostane stejnou odpověď (stejná položku v adresáři).


LDIF

LDIF (LDAP Interchange Format) je formát pro zápis obsahu adresářových služeb. Používá se především při hromadném přidávání nebo při změnách položek. Přesný popis naleznete v dokumentaci. Zde uvedu jen příklad. Mluví sám za sebe.

cn=Novak, ou=fi, o=muni, c=cz
mail=xnejaky_novak@fi.muni.cz
+title=Jan Novak
+jpegPhoto=/home/less/moje_fotka.jpeg
-description

"Klientské" nástroje pro práci s LDAP


Konfigurujeme OpenLDAP server

Pokud máme nainstalovaný (stažený, zkompilovaný, ...) server, který stáhneme na www.openldap.org, můžeme se pustit do konfigurace. Konfigurační soubor pro server se jmenuje slapd.conf(5) a je většinou po instalaci umístěn v adresáři /usr/local/etc/openldap. Místo, kde ho server bude po spuštění hledat můžeme změnit pomocí přepínače -f u slapd(8) nebo slurpd(8) Konfigurační soubor může vypadat například takto:

database ldbm
rootdn "cn=Spravce,ou=lab,dc=fi,dc=muni,dc=cz"
rootpw {MD5}MD5_HASH_HESLA_XYZ
suffix "dc=users,dc=lab,dc=fi,dc=muni,dc=cz"
index objectClass eq
directory /usr/local/var/openldap-data
Volba database nastavuje typ databáze, rootdn nastavuje cestu k položce superuživatele databáze, rootpw je jeho heslo, suffix specifikuje suffix pro všechny dotazy jdoucí do databáze a index říká, podle jakého klíče se budou indexovat položky v adresáři. Na tomto místě můžeme vytvořit (použít) startovací script pro naši oblíbenou distribuci a spustit server.

Unixoví uživatelé a LDAP

Nyní budeme nastavovat klientskou stranu. Předpokládám nainstalovanou libnss-ldap. Tato knihovna předpokládá, že v adresáři budou objekty s atributy uid, uidNumber, gidNumber, homeDirectory, and loginShell Konfigurační soubor se protentokrát vyskytuje v /etc/libnss-ldap.conf. Zde je příklad, jak by mohl vypadat:

host localhost
base dc=users,dc=lab,dc=fi,dc=muni,dc=cz
Dále musíme říct systému, aby tento adresář používal, což uděláme upravením souboru /etc/nsswitch.conf
passwd:    files ldap
group:     files ldap
shadow:    files ldap
A nyní ještě musíme nastavit PAM, aby jsme mohli v LDAP uchovávat i hesla. Pro PAM je konfigurační soubor v /etc/pam_ldap.conf
host localhost
dc=users,dc=lab,dc=fi,dc=muni,dc=cz
pam_password md5
Řádka pam_password md5 způsobí, že hesla se budou hashovat lokálně a přímo posílat do databáze. Dále je potřeba upravit soubory v /etc/pam.d/. Zde uvádím jako příklad pouze login
#%PAM-1.0
auth        required      pam_nologin.so
auth        sufficient    pam_ldap.so
auth        sufficient    pam_unix.so shadow use_first_pass
auth        required      pam_deny.so

Odkazy

Spousta tutoriálů souvisejících s LDAP
http://www.cesnet.cz/doc/techzpravy/2000-4/#ldifupdate
LDAP HOWTO
OpenLDAP