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.ldifodebrá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.ldifNeuvedeme-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ů: