LDAP Data Interchange Format – Wikipedia

LDIF (Abkürzung aus dem Englischen für LDAP Data Interchange Format) ist ein ASCII-basierendes Dateiformat zur Darstellung von Informationen aus einem LDAP-Verzeichnis.

LDAP beschreibt lediglich ein Kommunikationsprotokoll von Verzeichnisdiensten, die interne Darstellung der Daten in einem Verzeichnis ist nicht spezifiziert und somit bei konkreten Implementierungen verschiedener Hersteller unterschiedlich. Um dennoch einen einfachen Austausch von Daten auch zwischen heterogenen Verzeichnissen zu ermöglichen, wurde LDIF als Austauschformat spezifiziert.

Wie auch bei LDAP wurde bei der Entwicklung von LDIF darauf geachtet, das Format möglichst einfach zu gestalten. Durch die Beschränkung auf eine rein textuelle Darstellung bleibt das Format menschenlesbar und kann somit einfach interpretiert werden. Die Dateiinhalte sind dabei in ASCII kodiert. Sobald Sonderzeichen – wie Umlaute – enthalten sind, müssen die Daten base64-kodiert abgelegt werden (manche Tools und Serverimplementierungen unterstützen auch unkodierte Werte). Die Attributsnamen sind dabei mit einem Doppelpunkt gekennzeichnet (attribut:: base64-Wert).

Ein LDAP-Objekt wird durch mehrere LDIF-Zeilen beschrieben. Am Anfang steht immer der distinguished name dn, der die absolute Position im LDAP-Baum angibt. Es folgen ein oder mehrere Objektklassen, die definieren, welche Attribute zulässig oder vorgeschrieben sind. Dann folgen die Attribut/Wert-Paare, die den eigentlichen Inhalt darstellen. Multi-Value-Attribute werden mehrfach angegeben, dabei erfolgt ein Wert pro Zeile. Die Objekt-Definition wird durch eine Leerzeile abgeschlossen. Eine Zeile, die mit einem Hash-Zeichen (#) beginnt, stellt einen Kommentar dar und wird durch Tools ignoriert. Lange Zeilen können umbrochen werden, indem ein Zeilenumbruch gefolgt von einem Leerzeichen angegeben wird.

Es gibt zwei grundlegende LDIF-Formate, die innerhalb einer Datei nicht gemischt werden dürfen:

  • LDIF Content: Beschreibt Einträge als solche mit Attributen
  • LDIF Change: Beschreibt Änderungen an Einträgen und deren Attributen. Pro Eintrag können mehrere verschiedene Anweisungen angegeben werden.

Beispiel: LDIF-Content-Datei firmenstruktur.ldif mit fünf LDAP-Objekten:

 dn: dc=structure-net, dc=de  objectclass: organization  objectclass: top  o: Structure Net  l: Hamburg  postalcode: 21033  streetaddress: Billwiese 22   dn: ou=Sales, dc=structure-net, dc=de  objectclass: organizationalunit  ou: Sales  description: Verkauf  telephonenumber: 040-7654321  facsimiletelephonenumber: 040-7654321   dn: ou=Development, dc=structure-net, dc=de  objectclass: organizationalunit  ou: Development  description: Entwicklung  telephonenumber: 040-7654321  facsimiletelephonenumber: 040-7654321   dn: ou=Support, dc=structure-net, dc=de  objectclass: organizationalunit  ou: Support  description: Support  telephonenumber: 040-7654321  facsimiletelephonenumber: 040-7654321   dn: uid=admin, dc=structure-net, dc=de  objectclass: person  objectclass: organizationalperson  objectclass: inetorgperson  cn: admin  cn: Systemverwalter  cn: Thomas Bendler  sn: Bendler  uid: admin  mail: [email protected]  l: Hamburg  postalcode: 21033  streetaddress: billwiese 22  telephonenumber: 040-7654321  facsimiletelephonenumber: 040-7654321 

aus: Thomas Bendler: Linux LDAP-HOWTO.

Beispiel: LDIF-Content-Datei mit Zeilenumbruch:

 dn: ou=VeryLong,o=TestOrg,dc=de  objectclass: organizationalunit  ou: veryLong  l:: w5xiZXJsaW5nZW4=  description: Dies ist eine sehr lange Beschreibung. Sie ist so lang, dass sie hier->   <- umbrochen wird.   Das laesst sich beliebig oft wiederholen. Dabei ist egal,   ob nur die Daten getrennt werden oder auch Attributsnamen.   Trennen ist ueberall im LDIF-Text moeglich.  attr   ibut: Beispiel fuer ein umbrochenes Attribut. 

Beispiel: LDIF-Change-Datei mit Kommentar:

 # Vorhandene Beispielabteilung modifizieren: Beschreibung (attribut description) hinzufügen  dn: ou=Example,o=TestOrg,dc=de  changeType: modify  add: description  description: Dies ist der Beschreibungstext   # Eintrag mit mehreren Changeanweisungen  #  1. Beschreibung hinzufügen  #  2. Postleitzahl ersetzen  #  3. Telefonnummer durch mehrere neue ersetzen  #  4. Straße löschen  #  5. bestimmte Faxnummer löschen (andere Faxnummern bleiben bestehen)  dn: ou=AmpleEx,o=TestOrg,dc=de  changeType: modify  add: description  description: Test1234  -  replace: postalCode  postalCode: 12345  -  replace: telephoneNumber  telephoneNumber: 01234 56789  telephoneNumber: 98765 4321-0  -  delete: street  -  delete: facsimileTelephoneNumber  facsimileTelephoneNumber: deleteJustThisValue 
 # Neuen LDAP-Eintrag anlegen  dn: cn=FooBar,ou=Example,o=TestOrg,dc=de  changeType: add  objectClass: person  objectClass: organizationalPerson  objectClass: inetOrgPerson  cn: FooBar  sn: Bar  givenName: Foo  mail: [email protected]  telephonenumber: 1234 567890 

Adaptiert aus RFC 2849[1] (dort gibt es noch viele weitere gute Beispiele):

# Eintrag umbenennen (alter Name wird entfernt) # (Wird "deleteoldrdn: 1" auf 0 gesetzt (oder komplett weggelassen), bleibt der alte Name als Alias erhalten.) dn: cn=FooBar,ou=Example,o=TestOrg,dc=de changetype: modrdn newrdn: cn=BarFoo deleteoldrdn: 1  # Eintrag (und alle Kindelemente) im Baum umziehen (nur LDAPv3 Server) dn: cn=FooBar,ou=Example,o=TestOrg,dc=de changetype: modrdn newrdn: ou=BarFoo newsuperior: ou=elpmaxE,o=TestOrg,dc=de 
  • G. Good: RFC 2849 – The LDAP Data Interchange Format (LDIF) – Technical Specification. Juni 2000 (englisch).
  • Thomas Bendler: Linux LDAP Howto. linuxhaven.de

Einzelnachweise

[Bearbeiten | Quelltext bearbeiten]
  1. G. Good: RFC 2849 – The LDAP Data Interchange Format (LDIF) – Technical Specification. Juni 2000 (englisch).