📄LDIF – LDAP Data Interchange Format

LDIF ist das Textformat für Einträge und Änderungen: Export mit slapcat/ldapsearch, Import mit ldapadd/slapadd, Änderungen mit ldapmodify. Leerzeilen trennen Datensätze, # leitet Kommentare ein.

🛠️LDIF-Werkstatt

Bearbeite das LDIF, lies die Prüfung und wende es auf eine frische Kopie der Beispieldaten an – mit denselben Result-Codes, die slapd liefert.

🩺 Prüfung

✅ Keine Syntaxfehler – 4 Datensätze.

📦 Datensätze

modifyuid=anna.schmidt,ou=people,dc=example,dc=org
  • replace mail ← anna@example.org
  • add description ← Teamleitung Vertrieb Nord
  • delete telephoneNumber (alle Werte)
modifycn=technik,ou=groups,dc=example,dc=org
  • add member ← uid=anna.schmidt,ou=people,dc=example,dc=org
modrdnuid=eva.fischer,ou=people,dc=example,dc=org
newrdn uid=eva.klein, deleteoldrdn 1
deletecn=admins,ou=groups,dc=example,dc=org

📚 Quellen: RFC 2849 – The LDAP Data Interchange Format (LDIF) · ldif(5) · ldapmodify(1)

🔐Base64 und Zeilenumbruch

Nur „sichere“ Werte dürfen im Klartext stehen: ASCII ohne CR, LF und NUL, nicht beginnend mit Leerzeichen, „:“ oder „<“. Alles andere wird mit „::“ Base64-kodiert – deshalb sehen Umlaute in slapcat-Ausgaben so kryptisch aus.
🔐 Base64 nötig: enthält „ö“ (U+00F6) – nicht in SAFE-CHAR (nur ASCII ohne CR/LF/NUL)
UTF-8-Bytes
4a c3 b6 72 67 20 57 65 69 c3 9f
Base64 dieser Bytes
SsO2cmcgV2Vpw58=
LDIF-Zeile
cn:: SsO2cmcgV2Vpw58=

Abschalten bei ldapsearch/slapcat: -o ldif_wrap=no

📚 Quellen: RFC 2849 – The LDAP Data Interchange Format (LDIF) · ldapsearch(1)

📐Die vier Änderungsarten

dn: uid=gina.lang,ou=people,dc=example,dc=org
changetype: add
objectClass: inetOrgPerson
uid: gina.lang
cn: Gina Lang
sn: Lang
dn: uid=anna.schmidt,ou=people,dc=example,dc=org
changetype: modify
replace: mail
mail: anna@example.org
-
add: description
description: Teamleitung
-
delete: telephoneNumber
-
dn: uid=eva.fischer,ou=people,dc=example,dc=org
changetype: modrdn
newrdn: uid=eva.klein
deleteoldrdn: 1
newsuperior: ou=alumni,dc=example,dc=org
dn: cn=admins,ou=groups,dc=example,dc=org
changetype: delete
⚠️ Der Trennstrich zählt
Jeder Block in changetype: modify endet mit einer Zeile -. Fehlt er, liest ldapmodify die nächste Zeile als weiteren Wert für dasselbe Attribut – und scheitert mit einem verwirrenden Fehler.
💡 Atomar pro Eintrag
Alle Änderungen eines modify-Datensatzes werden gemeinsam angewendet oder gar nicht. Über mehrere Datensätze hinweg gibt es dagegen keine Transaktion: ohne -c bricht ldapmodify beim ersten Fehler ab, bereits Geschriebenes bleibt.

📚 Quellen: RFC 2849 – The LDAP Data Interchange Format (LDIF)