17.7    Änderungen mit »ldapmodify«

Das Ändern von Objekteigenschaften über ein grafisches Frontend ist so lange gut und ausreichend, wie Sie nur einzelne Änderungen vornehmen wollen. Wenn Sie aber zum Beispiel die Telefonnummer für alle Objekte ändern wollen, ist diese Aufgabe mit einem grafischen Werkzeug doch sehr mühsam. Deshalb gibt es das Kommando ldapmodify, mit dem Sie über ldif-Dateien komplexe Änderungen an Objekten vornehmen können.

17.7.1    Interaktive Änderung mit »ldapmodify«

Das Kommando ldapmodify können Sie auch direkt auf der Kommandozeile interaktiv verwenden, ohne vorher eine LDIF-Datei zu erzeugen. Dazu rufen Sie ldapmodify wie in Listing 17.16 auf der Kommandozeile auf:

ldapmodify -x -D "cn=admin,dc=example,dc=net" -W
Enter LDAP Password:
dn: uid=stefan,ou=users,dc=example,dc=net
changetype: modify
add: description
description: Benutzer Nummer eins
modifying entry "uid=stefan,ou=users,dc=example,dc=net"

Listing 17.16    Interaktive Nutzung von »ldapmodify«

Nachdem Sie das Passwort eingegeben haben, geben Sie jede Zeile einzeln ein und bestätigen sie mit (¢). Nach der letzten Zeile beenden Sie ldapmodify mit (Strg)  +  (D). Daraufhin wird eine Erfolgsmeldung angezeigt. Das ist natürlich nur eine Lösung für einzelne Änderungen.

17.7.2    Änderungen über eine LDIF-Datei mit »ldapmodify«

Wollen Sie viele Änderungen durchführen, ist es einfacher, wenn Sie eine LDIF-Datei erzeugen und die Änderungen anschließend mit ldapmodify einlesen. Das hat auch den Vorteil, dass Sie bei einem Syntaxfehler einfach die Datei ändern können und nicht alles wieder von Hand neu eingeben müssen. In diesem Schritt soll für den Container ou=users und ou=hosts eine Beschreibung als Attribut hinzugefügt werden. Dazu erstellen Sie eine LDIF-Datei mit dem Inhalt aus Listing 17.17:

dn: ou=users,dc=example,dc=net
changetype: modify
replace: description
description: Container fuer alle Benutzer

dn: ou=groups,dc=example,dc=net
changetype: modify
add: description
description: Container fuer alle Gruppen

Listing 17.17    LDIF-Datei für Modifikationen an mehreren Objekten

Die Leerzeile zwischen den beiden Änderungen ist wichtig, denn dadurch kann ldapmodify erkennen, dass es sich um Änderungen für mehrere Objekte handelt. Nachdem Sie die Datei erstellt haben, können Sie die Änderungen mit ldapmodify so wie in Listing 17.18 einspielen:

ldapmodify -x -D "cn=admin,dc=example,dc=net" -W -f modify.ldif
Enter LDAP Password:
modifying entry "ou=users,dc=example,dc=net"

modifying entry "ou=hosts,dc=example,dc=net"

Listing 17.18    Einspielen der Änderungen

Nach der Änderung können Sie die Objekte sowohl über die Kommandozeile mit dem Kommando ldapsearch als auch mit dem LAM überprüfen. Wollen Sie an ein und demselben Objekt mehrere Änderungen gleichzeitig durchführen, können Sie das auch über eine ldif-Datei realisieren. Listing 17.19 zeigt ein Beispiel für eine ldif-Datei, mit der bei einem Objekt mehrere Attribute geändert werden:

dn: uid=stefan,ou=users,dc=example,dc=net
changetype: modify
replace: description
description: Eine neue Beschreibung
-
add: mobile
mobile: 177 12345676
-
delete: title

Listing 17.19    »ldif«-Datei für mehrere Änderungen an einem Objekt

Wichtig sind dabei die Trennlinien mit dem Minuszeichen: Daran erkennt ldapmodify, dass alle Änderungen an ein und demselben Objekt durchgeführt werden sollen. Die Änderungen werden genau wie im Beispiel vorher mit ldapmodify eingespielt. Jetzt können Sie natürlich auch hingehen und den Objektnamen, der geändert werden soll, sowie die Werte der Attribute über ein Skript aus Dateien auslesen und damit viele Benutzer gleichzeitig ändern.