LDAP je trochu blbější databáze optimalizovaná pro RO operace. Je velice rychlá při čtení a vyhledávání, a to jsou operace prováděné mnohem častěji než zápis.
Slouží pro ukládání v podstatě čehokoliv, co se nám hodí ukládat na síť a co potřebujeme častěji číst než zapisovat. Od databáze uživatelů až po televizní program...
Rozlišuje služby autorizované a neautorizované, globální a lokální, jak můžou být aktualizované záznamy a kým, co položky mohou obsahovat a mnoho dalších věcí.
dn: uid=Pepa,ou=Students,ou=People,dc=mistni,dc=sit uid: Pepa cn: Pepa Pepik objectClass: Skola login: pepa mail: pepa@mistni.sit home: /home/pepa type: Student dn: uid=Webserver,ou=Machines,dc=mistni,dc=sit uid: Webserver cn: Pepuv webovy server objectClass: Stroj public: yes admin: pepa access: pepa, jinypepa
SLAPD je implementace systému OpenLDAP pod GNU/GPL a také není omezen jen na použití v USA.
Jeho kompilace není náročná, provede se skoro klasickou triádou. ./configure, make depend, make, make install. Při kompilaci je dobré podívat se na podporované vlastnosti a vybrat si. Např chceme-li podporu pro Kerberos (--enable-kpasswd) či jak se hesla budou ukládat (--enable-cleartext nebo --enable-crypt).
Parametrů při kompilaci je opravdu dost, doporučuji prostudovat. Každopádně, kompilace není nutná při použití velkých linuxových distribucí. V tom případě jsou připravené binární balíčky.
Zdrojové kódy se dají stáhnout např. z http://www.openldap.org (aktuální stabilní verze je 2.1.22 a vývojová 2.2beta2).
#globální nastavení
allow bind_v2
include         /etc/ldap/schema/core.schema
schemacheck     on
pidfile         /var/run/slapd/slapd.pid
argsfile        /var/run/slapd.args
loglevel        0
access to attribute=userPassword
        by dn="cn=admin,dc=doma" write
        by anonymous auth
        by self write
        by * none
access to dn.base="" by * read
access to *
        by dn="cn=admin,dc=doma" write
        by * read
modulepath      /usr/lib/ldap
moduleload      back_bdb
#nastavení pro backend. V našem případě je to databáze
backend         bdb
database        bdb
suffix          "dc=doma"
directory       "/var/lib/ldap"
index           objectClass eq
lastmod         on
	
        access to co [ by kdo urovenpristupu control ]+ -- zaručí přístup k co uživateli kdo a povolí mu urovenpristupu. např.:
access to * by * read-- kdokoliv muze cist cokoliv
defaultaccess { none | compare | search | read | write } -- standartní práva, pokud není určeno jinak
include filename -- vloží soubor s konfigurací. Buďto to může být konfigurační soubor, nebo soubor s definicí tzv. schéma
loglevel číslo -- Popis jednotlivých úrovní je v odkazech...
objectclass 'RFC2252 Object Class Description' -- Tato direktiva definuje nejspíš jméno schéma
sizelimit číslo -- omezuje maximální počet položek, které vrací vyhledávání
Uvedené parametry jsou jen ty nejdůležitější, další jsou uvedeny zde i s pěknými příklady
Další parametry se odvíjí od typu. Vzhledem k množství typů je zde nebudu podrobněji rozebírat
Když chceme přidat záznam do ldapu, máme více možností. Například pomocí souboru ldif. Tento způsob je hlavně pro hromadné přidávání záznamů. Jeho formát je uveden výše.
        ldapadd -x -D "cn=admin,dc=moje,dc=sit" -W -f zaznamy.ldif
        
        odebrání záznamů je velmi podobné jako přidávání:
        
        ldapdelete -v -c -x -W -D "cn=admin,dc=moje,dc=sit" -f copryc.ldif
        
        Neuvedeme-li parametr -f, potom se jako vstup bere ten standartní.
        Chcete-li záznamy vyhledávat, máme k dispozici program ldapsearch. Jak například vysypat obsah celé databáze:
        ldapsearch -x -b 'dc=moje,dc=sit'
        
        
        Za cn= se dosadí správcovský účet a dc záznamy se opraví také.
        Jak vyčistit celou databázi?
        ldapsearch -x -b 'dc=moje,dc=sit'| cut -f 2 -d":"| ldapdelete -c -x -W -D "cn=admin,dc=moje,dc=sit"
        
        POZOR!!! Toto opravdu odstraní VEŠKERÉ záznamy z LDAP-u.
        
        ldapsearch -L -x -W -D "cn=admin,dc=moje,dc=sit" -b 'dc=moje,dc=sit'
        
        Tím zjistíme, co vlastně máme v databázi...
	
        dn: uid=login,ou=People,dc=moje,dc=sit uid: login cn: Cele Jmeno objectClass: account objectClass: posixAccount objectClass: top objectClass: shadowAccount userPassword:: zakryptovaneheslo shadowLastChange: 12320 shadowMax: 99999 shadowWarning: 7 loginShell: /bin/bash uidNumber: 5000 gidNumber: 5000 homeDirectory: /home/login gecos: Ten Clovek Co se Snazi Dostat Do SystemuPotom je nutné přesvědčit systém, aby si to vše bral z ldapu. To se provede jednoduchým poeditováním souborů: