25.4. Správa dat v LDAP adresáři

OpenLDAP nabízí pro správu dat v LDAP adresáři celou řadu nástrojů. Čtyři nejdůležitější nástroje pro vkládání, mazání, vyhledávání a úpravy dat jsou popsány dále.

25.4.1. Vkládání dat do LDAP adresáře

Pokud je LDAP server správně nakonfigurován, tedy pokud jsou v souboru /etc/openldap/lsapd.conf nastaveny položky suffix, directory, rootdn, rootpw a index, pokračujte vkládáním záznamů. K tomu OpenLDAP nabízí nástroj ldapadd. Objekty je z praktických důvodů vhodné vkládat po větších celcích. Vhodný je například LDIF formát (LDAP Data Interchange Format). LDIF je jednoduchý textový soubor obsahující páry atribut—hodnota. Dostupné objektové třídy a atributy jsou definované ve schématech uvedených v souboru slapd.conf. LDIF soubor k vytvoření hrubé kostry obrázku 25.1 – „Struktura LDAP adresáře“ by vypadal asi tak, jak je uvedeno v příkladu 25.7 – „Příklad LDIF souboru“:

Příklad 25.7. Příklad LDIF souboru

# The SUSE Organization
dn: dc=suse,dc=de
objectClass: dcObject
objectClass: organization
o: SUSE AG dc: suse

# The organizational unit development (devel)
dn: ou=devel,dc=suse,dc=de
objectClass: organizationalUnit
ou: devel

# The organizational unit documentation (doc)
dn: ou=doc,dc=suse,dc=de
objectClass: organizationalUnit
ou: doc

# The organizational unit internal IT (it)
dn: ou=it,dc=suse,dc=de
objectClass: organizationalUnit
ou: it
[Important]Kódování LDIF souborů

LDAP pracuje s UTF-8 (Unicode). Používejte proto editor s podporou UTF-8 (např. Kate nebo novější verze editorů Emacs či Vim). Jestliže použijete editor bez podpory UTF-8, budou se špatně zobrazovat znaky s českou diakritikou. Pokud potřebujete převést do UTF-8 již existující text, použijte program recode.

Soubor se ukládá s příponou .ldif a serveru se předává příkazem:


ldapadd -x -D <dn administrátora> -W -f <soubor>.ldif

První parametr, -x, vypíná ověřování pomocí SASL. Parametr -D specifikuje uživatele, který operaci volá. Za touto volbou musí následovat DN administrátora tak, jak je uvedeno v souboru slapd.conf. V našem případě jde o cn=admin,dc=suse,dc=de. Přepínač -W obejde zadávání hesla přímo na příkazovém řádku (v prostém textu) a zobrazí zvláštní výzvu k zadání hesla. Jde o heslo ze souboru slapd.conf (rootpw). Parametrem -f předáte jméno souboru. Ukázku běhu programu ldapadd si můžete prohlédnout v příkladu 25.8 – „Použití ldapadd s example.ldif“.

Příklad 25.8. Použití ldapadd s example.ldif


ldapadd -x -D cn=admin,dc=suse,dc=de -W -f example.ldif

Enter LDAP password:
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"

Data jednotlivých uživatelů lze připravit v oddělených LDIF souborech. Příklad 25.9 – „LDIF data uživatele Tux“ přidává do LDAP adresáře uživatele Tux:

Příklad 25.9. LDIF data uživatele Tux


# coworker Tux
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

LDIF soubor může obsahovat libovolné množství objektů. Jednotlivé větve stromu je tak možné vložit do databáze najednou nebo po částech. Pokud se některé části mění častěji, je vhodné je oddělit zvlášť.

25.4.2. Úprava dat v LDAP adresáři

K úpravě dat se používá příkaz ldapmodify. Nejjednodušší způsob je změnit patřičný LDIF soubor a ten pak předat serveru. Pokud byste např. chtěli změnit telefonní číslo kolegy Tuxe z +49 1234 567-8 na +49 1234 567-10, změňte LDIF soubor tak, jak je uvedeno v příkladu 25.10 – „Upravený LDIF soubor tux.ldif“:

Příklad 25.10. Upravený LDIF soubor tux.ldif


# coworker Tux
dn: cn=Tux Linux,ou=devel,dc=suse,dc=de
changetype: modify
replace: telephoneNumber
telephoneNumber: +49 1234 567-10

Upravený soubor importujete do adresáře na serveru příkazem:


ldapmodify -x -D cn=admin,dc=suse,dc=de -W -f tux.ldif

Vlastnosti lze měnit i přímo následujícím postupem:

  • Spusťte příkaz ldapmodify a zadejte heslo:

    
    ldapmodify -x -D cn=admin,dc=suse,dc=de -W 
    Enter LDAP password:
    
  • Při zadání změn je nutné dodržovat syntaxi. Příkazy pro náš případ vypadají takto:

    
    dn: cn=Tux Linux,ou=devel,dc=suse,dc=de
    changetype: modify
    replace: telephoneNumber
    telephoneNumber: +49 1234 567-10

Více informací o ldapmodify a příslušné syntaxi najdete v jeho manuálové stránce (ldapmodify(1)).

25.4.3. Vyhledávání a čtení dat z LDAP adresáře

OpenLDAP poskytuje nástroj ldapsearch pro vyhledávání a čtení dat z LDAP adresáře. Jednoduchý dotaz má následující syntaxi:


ldapsearch -x -b dc=suse,dc=de "(objectClass=*)"

Parametrem -b nastavíte vyhledávací základnu (search base), tj. sekci stromu, která má být prohledána, v našem případě dc=suse,dc=de. Volba -x zapíná jednoduchou autentizaci. (objectClass=*) určuje, že budou čteny všechny objekty v adresáři. Tento příkaz je vhodný např. k ověření správnosti záznamů po vytvoření nového adresářového stromu. Více informací najdete v manuálové stránce ldapsearch(1).

25.4.4. Mazání dat z LDAP adresáře

Nechtěné záznamy smažete pomocí příkazu ldapdelete. Syntaxe je podobná jako u příkazů uvedených výše. Např. celý záznam Tux Linux smažete příkazem:


ldapdelete -x -D cn=admin,dc=suse,dc=de -W cn=Tux \
Linux,ou=devel,dc=suse,dc=de