Zum Inhalt springen

„LDAP Data Interchange Format“ – Versionsunterschied

aus Wikipedia, der freien Enzyklopädie
[gesichtete Version][gesichtete Version]
Inhalt gelöscht Inhalt hinzugefügt
Beschreibung ergänzt, Beispiele hinzugefügt
tk k
 
(21 dazwischenliegende Versionen von 18 Benutzern werden nicht angezeigt)
Zeile 4: Zeile 4:


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 [[Menschenlesbarkeit|menschenlesbar]] und kann somit einfach interpretiert werden.
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 [[Menschenlesbarkeit|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 (<code>attribut:: base64-Wert</code>).


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.
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.
Eine Zeile, die mit einem Hash-Zeichen (#) beginnt, stellt einen Kommentar dar und wird durch Tools ignoriert.
Lange Zeilen können umgebrochen werden, indem ein Zeilenumbruch gefolgt von einem Leerzeichen angegeben wird.
Lange Zeilen können umbrochen werden, indem ein Zeilenumbruch gefolgt von einem Leerzeichen angegeben wird.


=== LDIF Formate ===
== LDIF-Formate ==
Es gibt zwei grundlegende LDIF-Formate, die innerhalb einer Datei auch frei gemischt werden können:
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 Content: Beschreibt Einträge als solche mit Attributen
* LDIF Change: Beschreibt Änderungen an Einträgen und deren Attributen. Pro Einträg können mehrere verschiedene Anweisungen angegeben werden.
* LDIF Change: Beschreibt Änderungen an Einträgen und deren Attributen. Pro Eintrag können mehrere verschiedene Anweisungen angegeben werden.


== Beispiele ==
== Beispiele ==


Beispiel: LDIF content Datei firmenstruktur.ldif mit fünf [[Lightweight Directory Access Protocol|LDAP]]-Objekten:
Beispiel: LDIF-Content-Datei firmenstruktur.ldif mit fünf [[Lightweight Directory Access Protocol|LDAP]]-Objekten:
<syntaxhighlight lang="text">

dn: dc=structure-net, dc=de
dn: dc=structure-net, dc=de
objectclass: organization
objectclass: organization
Zeile 25: Zeile 26:
postalcode: 21033
postalcode: 21033
streetaddress: Billwiese 22
streetaddress: Billwiese 22

dn: ou=Sales, dc=structure-net, dc=de
dn: ou=Sales, dc=structure-net, dc=de
objectclass: organizationalunit
objectclass: organizationalunit
Zeile 32: Zeile 33:
telephonenumber: 040-7654321
telephonenumber: 040-7654321
facsimiletelephonenumber: 040-7654321
facsimiletelephonenumber: 040-7654321

dn: ou=Development, dc=structure-net, dc=de
dn: ou=Development, dc=structure-net, dc=de
objectclass: organizationalunit
objectclass: organizationalunit
Zeile 39: Zeile 40:
telephonenumber: 040-7654321
telephonenumber: 040-7654321
facsimiletelephonenumber: 040-7654321
facsimiletelephonenumber: 040-7654321

dn: ou=Support, dc=structure-net, dc=de
dn: ou=Support, dc=structure-net, dc=de
objectclass: organizationalunit
objectclass: organizationalunit
Zeile 46: Zeile 47:
telephonenumber: 040-7654321
telephonenumber: 040-7654321
facsimiletelephonenumber: 040-7654321
facsimiletelephonenumber: 040-7654321

dn: uid=admin, dc=structure-net, dc=de
dn: uid=admin, dc=structure-net, dc=de
objectclass: person
objectclass: person
Zeile 62: Zeile 63:
telephonenumber: 040-7654321
telephonenumber: 040-7654321
facsimiletelephonenumber: 040-7654321
facsimiletelephonenumber: 040-7654321
</syntaxhighlight>


<small>aus: Thomas Bendler: ''Linux LDAP-HOWTO''.</small>
<small>aus: Thomas Bendler: ''Linux LDAP-HOWTO''.</small>


Beispiel: LDIF content Datei mit Zeilenumbruch:
Beispiel: LDIF-Content-Datei mit Zeilenumbruch:
<syntaxhighlight lang="text">

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


Beispiel: LDIF change Datei mit Kommentar:
Beispiel: LDIF-Change-Datei mit Kommentar:


<syntaxhighlight lang="text">
# Vorhandene Beispielabteilung modifizieren: Beschreibung (Attribut description) hinzufügen
# Vorhandene Beispielabteilung modifizieren: Beschreibung (attribut description) hinzufügen
dn: ou=Example,o=TestOrg,dc=de
dn: ou=Example,o=TestOrg,dc=de
changeType: modify
changeType: modify
add: description
add: description
description: Dies ist der Beschreibungstext
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
</syntaxhighlight>

<syntaxhighlight lang="text">
# Neuen LDAP-Eintrag anlegen
# Neuen LDAP-Eintrag anlegen
dn: cn=FooBar,ou=Example,o=TestOrg,dc=de
dn: cn=FooBar,ou=Example,o=TestOrg,dc=de
Zeile 97: Zeile 127:
mail: foobar@testorg.de
mail: foobar@testorg.de
telephonenumber: 1234 567890
telephonenumber: 1234 567890
</syntaxhighlight>
-


Adaptiert aus <nowiki>RFC&nbsp;2849</nowiki><ref>{{RFC-Internet |Autor=G. Good |RFC=2849 |Titel=The LDAP Data Interchange Format (LDIF) – Technical Specification |Datum=2000-06}}</ref> (dort gibt es noch viele weitere gute Beispiele):
<syntaxhighlight lang="text">
# 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
</syntaxhighlight>


== Siehe auch ==
== Siehe auch ==
Zeile 104: Zeile 149:


== Weblinks ==
== Weblinks ==
* RFC 2849 (The LDAP Data Interchange Format (LDIF), Juni 2000)
* {{RFC-Internet |Autor=G. Good |RFC=2849 |Titel=The LDAP Data Interchange Format (LDIF) Technical Specification |Datum=2000-06}}
* [http://www.linuxhaven.de/dlhp/HOWTO/DE-LDAP-HOWTO.html Linux LDAP HOWTO] von Thomas Bendler
* Thomas Bendler: [http://www.linuxhaven.de/dlhp/HOWTO/DE-LDAP-HOWTO.html Linux LDAP Howto.] linuxhaven.de


== Einzelnachweise ==
{{DEFAULTSORT:Ldap Data Interchange Format}}
<references />
[[Kategorie:Datenformat]]


[[Kategorie:Datenformat]]
[[cs:LDAP Data Interchange Format]]
[[en:LDAP Data Interchange Format]]
[[fr:LDAP Data Interchange Format]]
[[hu:LDAP Data Interchange Format]]
[[pl:LDAP Data Interchange Format]]
[[pt:LDAP Data Interchange Format]]
[[ru:LDIF]]
[[tr:LDIF]]

Aktuelle Version vom 5. September 2023, 21:12 Uhr

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: tbendler@structure-net.de
 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: foobar@testorg.de
 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).