In OpenLDAP stehen eine Reihe von Werkzeugen für die Datenverwaltung im LDAP-Verzeichnis zur Verfügung. Die vier wichtigsten Werkzeuge für Hinzufüge-, Lösch-, Such- und Änderungsvorgänge im Datenbestand werden im Folgenden beschrieben.
Sobald die Konfiguration des LDAP-Servers in /etc/openldap/slapd.conf
richtig und einsatzbereit ist (sie enthält die richtigen Einträge für suffix
, directory
, rootdn
, rootpw
und index
), fahren Sie mit der Eingabe von Datensätzen fort. In OpenLDAP steht hierfür der Befehl ldapadd zur Verfügung. Wenn möglich, sollten Sie aus praktischen Gründen die Objekte als Bundle in der Datenbank hinzufügen. Zu diesem Zweck kann LDAP das LDIF-Format (LDAP Data Interchange Format) verarbeiten. Bei einer LDIF-Datei handelt es sich um eine einfache Textdatei, die eine beliebige Anzahl an Attribut-Wert-Paaren enthalten kann. In den in slapd.conf
deklarierten Schemadateien finden Sie die verfügbaren Objektklassen und Attribute. Die LDIF-Datei zur Erstellung eines groben Framework für das Beispiel in Abbildung 26.1, „Struktur eines LDAP-Verzeichnisses“ würde der Datei in Beispiel 26.7, „Beispiel für eine LDIF-Datei“ ähneln.
Codierung von LDIF-Dateien | |
---|---|
LDAP arbeitet mit UTF-8 (Unicode). Umlaute müssen richtig kodiert werden. Verwenden Sie einen Editor mit UTF-8-Unterstützung, wie beispielsweise Kate oder neuere Versionen von Emacs. Ansonsten sollten Sie Umlaute und andere Sonderzeichen vermeiden oder recode verwenden, um die Eingabe in UTF-8 neu zu kodieren. |
Beispiel 26.7. Beispiel für eine LDIF-Datei
# The Organization dn: dc=example,dc=com objectClass: dcObject objectClass: organization o: Example dc: example # The organizational unit development (devel) dn: ou=devel,dc=example,dc=com objectClass: organizationalUnit ou: devel # The organizational unit documentation (doc) dn: ou=doc,dc=example,dc=com objectClass: organizationalUnit ou: doc # The organizational unit internal IT (it) dn: ou=it,dc=example,dc=com objectClass: organizationalUnit ou: it
Speichern Sie die Datei mit der Erweiterung .ldif
und geben Sie sie mit folgendem Befehl an den Server weiter:
ldapadd -x -D <dn of the administrator> -W -f <file>.ldif
-x
deaktiviert in diesem Fall die Authentifizierung mit SASL. -D
deklariert den Benutzer, der den Vorgang aufruft. Der gültige DN des Administrators wird hier so eingegeben, wie er in slapd.conf
konfiguriert wurde. Im aktuellen Beispiel lautet er cn=Administrator,dc=example,dc=com
. Mit -W
wird die Passworteingabe in der Kommandozeile (unverschlüsselt) umgangen und eine separate Passworteingabeaufforderung aktiviert. Das Passwort wurde zuvor in slapd.conf
mit rootpw
festgelegt. Mit der Option -f
wird der Dateiname weitergegeben. Detaillierte Informationen zum Ausführen von ldapadd erhalten Sie in Beispiel 26.8, „ldapadd mit example.ldif“.
Beispiel 26.8. ldapadd mit example.ldif
ldapadd -x -D cn=Administrator,dc=example,dc=com -W -f example.ldif Enter LDAP password: adding new entry "dc=example,dc=com" adding new entry "ou=devel,dc=example,dc=com" adding new entry "ou=doc,dc=example,dc=com" adding new entry "ou=it,dc=example,dc=com"
Die Benutzerdaten einzelner Personen können in separaten LDIF-Dateien vorbereitet werden. In Beispiel 26.9, „LDIF-Daten für Tux“ wird dem neuen LDAP-Verzeichnis Tux
hinzugefügt.
Beispiel 26.9. LDIF-Daten für Tux
# coworker Tux dn: cn=Tux Linux,ou=devel,dc=example,dc=com objectClass: inetOrgPerson cn: Tux Linux givenName: Tux sn: Linux mail: tux@example.com uid: tux telephoneNumber: +49 1234 567-8
Eine LDIF-Datei kann eine beliebige Anzahl an Objekten enthalten. Es können ganze Verzeichnisverzweigungen oder nur Teile davon in einem Vorgang an den Server weitergegeben werden, wie im Beispiel der einzelnen Objekte dargestellt. Wenn bestimmte Daten relativ häufig geändert werden müssen, wird eine detaillierte Unterteilung der einzelnen Objekte empfohlen.
Mit dem Werkzeug ldapmodify kann der Datenbestand geändert werden. Am einfachsten können Sie dies durch die Änderung der entsprechenden LDIF-Datei und der Weiterleitung der geänderten Datei an den LDAP-Server erreichen. Wenn Sie die Telefonnummer des Kollegen Tux von +49 1234 567-8
in +49 1234 567-10
ändern möchten, bearbeiten Sie die LDIF-Datei, wie in Beispiel 26.10, „Geänderte LDIF-Datei tux.ldif“ angegeben.
Beispiel 26.10. Geänderte LDIF-Datei tux.ldif
# coworker Tux dn: cn=Tux Linux,ou=devel,dc=example,dc=com changetype: modify replace: telephoneNumber telephoneNumber: +49 1234 567-10
Importieren Sie die geänderte Datei mit folgendem Befehl in das LDAP-Verzeichnis:
ldapmodify -x -D cn=Administrator,dc=example,dc=com -W -f tux.ldif
Alternativ können Sie die zu ändernden Attribute direkt an ldapmodify weitergeben. Die entsprechende Vorgehensweise wird nachfolgend beschrieben:
Starten Sie ldapmodify und geben Sie Ihr Passwort ein:
ldapmodify -x -D cn=Administrator,dc=example,dc=com -W Enter LDAP password:
Geben Sie die Änderungen ein und halten Sie sich dabei genau in die unten angegebene Syntax-Reihenfolge:
dn: cn=Tux Linux,ou=devel,dc=example,dc=com changetype: modify replace: telephoneNumber telephoneNumber: +49 1234 567-10
Detaillierte Informationen zu ldapmodify und der zugehörigen Syntax finden Sie auf der Manualpage ldapmodify.
Mit ldapsearch steht in OpenLDAP ein Kommandozeilenwerkzeug zum Suchen von Daten innerhalb eines LDAP-Verzeichnisses und zum Lesen von Daten aus dem Verzeichnis zur Verfügung. Eine einfache Abfrage weist folgende Syntax auf:
ldapsearch -x -b dc=example,dc=com "(objectClass=*)"
Mit der Option -b
wird die Suchbasis festgelegt, d. h. der Abschnitt des Baums, in dem die Suche durchgefürt werden soll. Im aktuellen Fall lautet er dc=example,dc=com
. Wenn Sie eine feiner abgestufte Suche in speziellen Unterabschnitten des LDAP-Verzeichnisses durchführen möchten (beispielsweise nur innerhalb der Abteilung devel
), geben Sie diesen Abschnitt mit -b an ldapsearch
weiter. Mit -x
wird die Aktivierung der einfachen Authentifizierung angefordert. (objectClass=*)
deklariert, dass alle im Verzeichnis enthaltenen Objekte gelesen werden sollen. Diese Befehlsoption kann nach der Erstellung eines neuen Verzeichnisbaums verwendet werden, um zu prüfen, ob alle Einträge richtig aufgezeichnet wurden und ob der Server wie gewünscht reagiert. Weitere Informationen zur Verwendung von ldapsearch finden Sie auf der entsprechenden Manualpage (ldapsearch(1)).
Mit ldapdelete werden unerwünschte Einträge gelöscht. Die Syntax ist ähnlich wie die der anderen Befehle. Wenn Sie beispielsweise den vollständigen Eintrag für Tux Linux
löschen möchten, erteilen Sie folgenden Befehl:
ldapdelete -x -D cn=Administrator,dc=example,dc=com -W cn=Tux \ Linux,ou=devel,dc=example,dc=com