29.4. Handhabung von Daten im LDAP-Verzeichnis

OpenLDAP gibt Ihnen als Administrator eine Reihe von Programmen an die Hand, mit denen Sie die Daten im LDAP-Verzeichnis verwalten können. Im Folgenden werden die vier wichtigsten von ihnen zum Hinzufügen, Löschen, Durchsuchen und Verändern des Datenbestandes kurz behandelt.

29.4.1. Daten in ein LDAP-Verzeichnis eintragen

Vorausgesetzt, die Konfiguration Ihres LDAP-Servers in /etc/openldap/slapd.conf ist korrekt und einsatzfähig, d.h. sie enthält die passenden Angaben für suffix, directory, rootdn, rootpw und index, können Sie nun mit der Aufnahme von Einträgen beginnen. OpenLDAP bietet hierfür den Befehl ldapadd. Aus praktischen Gründen sollten Sie Objekte nach Möglichkeit gebündelt zur Datenbank hinzufügen. Zu diesem Zweck kennt LDAP das so genannte LDIF-Format (engl. LDAP Data Interchange Format). Eine LDIF-Datei ist eine einfache Textdatei, die aus beliebig vielen Attribut-Wert-Paaren bestehen kann. Für die zur Verfügung stehenden Objektklassen und Attribute schauen Sie in den in slapd.conf angegebenen Schemadateien nach. Die LDIF-Datei zum Anlegen eines groben Gerüsts für das Beispiel aus Abbildung 29.1, „Aufbau eines LDAP-Verzeichnisses“ sähe folgendermaßen aus (siehe Beispiel 29.7, „Beispiel für eine LDIF-Datei“):

Beispiel 29.7. Beispiel für eine LDIF-Datei

# Die Organisation SUSE 
dn: dc=suse,dc=de 
objectClass: dcObject
objectClass: organization 
o: SUSE AG dc: suse 

# Die Organisationseinheit Entwicklung (devel) 
dn: ou=devel,dc=suse,dc=de
objectClass: organizationalUnit 
ou: devel 

# Die Organisationseinheit Dokumentation (doc) 
dn: ou=doc,dc=suse,dc=de 
objectClass: organizationalUnit 
ou: doc 

# Die Organisationseinheit Interne EDV (it) 
dn: ou=it,dc=suse,dc=de 
objectClass: organizationalUnit 
ou: it 
[Important]Kodierung der LDIF-Dateien

LDAP arbeitet mit UTF-8 (Unicode), Umlaute müssen demnach bei der Eingabe korrekt kodiert werden. Verwenden Sie einen Editor, der UTF-8 unterstützt (wie Kate oder neuere Emacs-Versionen). Wenn dies nicht möglich ist, vermeiden Sie Umlaute und andere Sonderzeichen oder benutzen recode, um die Eingabe in UTF-8 umzukodieren.

Speichern Sie die Datei unter <datei>.ldif ab und übergeben Sie sie mit folgendem Befehl an den Server:

ldapadd -x -D <dn des Administrators> -W -f <datei>.ldif 

-x gibt an, dass in diesem Fall auf Authentifizierung über SASL verzichtet wird. -D kennzeichnet den Benutzer, der diese Operation vornimmt; hier geben Sie den gültigen DN des Administrators an, wie sie in slapd.conf konfiguriert wurde. Im konkreten Beispiel wäre dies cn=admin,dc=suse,dc=de. Mit -W umgehen Sie die Eingabe des Passworts auf der Kommandozeile (Klartext) und aktivieren eine separate Passwortabfrage. Das betreffende Passwort wurde vorher in slapd.conf unter rootpw eingerichtet. -f übergibt die Datei. In Beispiel 29.8, „ldapadd von beispiel.ldif“ sehen Sie Aufruf von ldapadd im Detail.

Beispiel 29.8. ldapadd von beispiel.ldif

ldapadd -x -D cn=admin,dc=suse,dc=de -W -f beispiel.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"

Die Benutzerdaten der einzelnen Mitarbeiter können Sie in separaten LDIF-Dateien angeben. Mit dem folgenden Beispiel tux.ldif (siehe Beispiel 29.9, „LDIF-Datei für Tux“) wird der Mitarbeiter Tux dem neuen LDAP-Verzeichnis hinzugefügt:

Beispiel 29.9. LDIF-Datei für Tux

# Der Mitarbeiter 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

Eine LDIF-Datei kann beliebig viele Objekte enthalten. Sie können ganze Verzeichnisbäume am Stück an den Server übergeben oder auch nur Teile davon wie zum Beispiel einzelne Objekte. Wenn Sie Ihre Daten relativ häufig ändern müssen, empfiehlt sich eine feine Stückelung in einzelne Objekte, da Ihnen dann das mühsame Suchen nach dem zu ändernden Objekt in einer großen Datei erspart bleibt.

29.4.2. Daten im LDAP-Verzeichnis ändern

Stehen in Ihrem Datensatz Änderungen an, verwenden Sie das Tool ldapmodify. Am einfachsten ändern Sie zuerst die betreffende LDIF-Datei und übergeben anschließend die geänderte Datei wieder an den LDAP-Server. Um zum Beispiel die Telefonnummer des Mitarbeiters Tux von +49 1234 567-8 auf +49 1234 567-10 zu ändern, editieren Sie die LDIF-Datei wie in Beispiel 29.10, „Geänderte LDIF Datei tux.ldif“ gezeigt.

Beispiel 29.10. Geänderte LDIF Datei tux.ldif

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

Die geänderte Datei importieren Sie mit dem folgenden Befehl in das LDAP-Verzeichnis:

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

Alternativ können Sie ldapmodify auch direkt die zu ändernden Attribute auf der Kommandozeile angeben. Hierbei gehen Sie wie folgt vor:

  1. Rufen Sie ldapmodify auf und geben Sie Ihr Passwort ein:

    ldapmodify -x -D cn=admin,dc=suse,dc=de -W 
    Enter LDAP password: 
     
  2. Geben Sie Ihre Änderungen nach der folgenden Syntax in genau dieser Reihenfolge an:

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

Detaillierte Informationen zu ldapmodify und zur Syntax lesen Sie in der Manualpage (ldapmodify(1)) nach.

29.4.3. Daten aus einem LDAP-Verzeichnis suchen oder auslesen

OpenLDAP bietet mit ldapsearch ein Kommandozeilenwerkzeug zum Durchsuchen und Auslesen von Daten im LDAP-Verzeichnis. Ein einfaches Suchkommando hätte folgende Syntax:

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

Die Option -b legt die Suchbasis, d.h. den Baumbereich, in dem gesucht werden soll, fest. In diesem Fall ist dies dc=suse,dc=de. Möchten Sie eine verfeinerte Suche auf bestimmten Unterbereichen des LDAP-Verzeichnisses ausführen (z.B. nur über die Abteilung devel), geben Sie diesen Bereich mittels -b an. ldapsearch -x legt die Verwendung einfacher Authentifizierung fest. Mit (objectClass=*) legen Sie fest, dass Sie alle in Ihrem Verzeichnis enthaltenen Objekte auslesen wollen. Verwenden Sie dieses Kommando nach dem Aufbau eines neuen Verzeichnisbaumes, um zu überprüfen, ob alle Ihre Einträge korrekt übernommen wurden und der Server in der gewünschten Form antwortet. Weitere Informationen zum Gebrauch von ldapsearch finden Sie in der entsprechenden Manualpage (ldapsearch (1)).

29.4.4. Daten aus einem LDAP-Verzeichnis löschen

Löschen Sie nicht mehr erwünschte Einträge mittels ldapdelete. Die Syntax ähnelt der der oben beschriebenen Kommandos. Um beispielsweise den Eintrag von Tux Linux im Ganzen zu löschen, geben Sie folgendes Kommando ein:

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

SUSE LINUX Administrationshandbuch 9.3