LDIF ist ein weit verbreitetes Dateiformat, das Directory-Informationen oder Änderungsoperationen beschreibt, die für ein Directory ausgeführt werden können. LDIF ist vollständig unabhängig vom Speicherformat, das für eine bestimmte Directory-Implementierung verwendet wird, und wird gewöhnlich zum Exportieren von Directory-Informationen von und zum Importieren von Daten nach LDAP-Servern verwendet.
LDIF ist üblicherweise einfach zu erstellen. Dies ermöglicht die Verwendung von Werkzeugen wie awk oder perl, um Daten von einem systemeigenen Format in ein LDAP-Directory zu verschieben. Darüber hinaus können Sie Skripten erstellen, um Testdaten im LDIF-Format zu erstellen.
Für den Import mit dem NetIQ Import Conversion Export-Dienstprogramm sind LDIF 1-formatierte Dateien erforderlich. Folgende Grundregeln gelten für LDIF 1-Dateien:
Die erste Zeile, die kein Kommentar ist, muss „version: 1“ lauten.
Auf die Version folgen eine oder mehrere Datensätze.
Jeder Datensatz besteht aus Feldern, wobei pro Zeile ein Feld vorhanden ist.
Die Zeilen werden durch einen Zeilenvorschub oder eine Kombination aus Zeilenumschaltung/Zeilenvorschub getrennt.
Datensätze werden durch eine oder mehrere Leerzeilen getrennt.
Es gibt zwei verschiedene Arten von LDIF-Datensätzen: Inhaltsdatensätze und Änderungsdatensätze. Eine LDIF-Datei kann eine unbegrenzte Anzahl von Datensätzen enthalten, sie müssen jedoch alle den gleichen Typ aufweisen. Es ist nicht möglich, Inhaltsdatensätze und Änderungsdatensätze in einer LDIF-Datei zu mischen.
Jede Zeile, die mit dem Nummernzeichen (#) beginnt, ist ein Kommentar und wird bei der Verarbeitung der LDIF-Datei ignoriert.
Ein LDIF-Inhaltsdatensatz repräsentiert die Inhalte eines vollständigen Eintrags. Es folgt ein Beispiel für eine LDIF-Datei mit vier Inhaltsdatensätzen:
1 version: 1 2 dn: c=US 3 objectClass: top 4 objectClass: country 5 6 dn: l=San Francisco, c=US 7 objectClass: top 8 objectClass: locality 9 st: San Francisco 10 11 dn: ou=Artists, l=San Francisco, c=US 12 objectClass: top 13 objectClass: organizationalUnit 14 telephoneNumber: +1 415 555 0000 15 16 dn: cn=Peter Michaels, ou=Artists, l=San Francisco, c=US 17 sn: Michaels 18 givenname: Peter 19 objectClass: top 20 objectClass: person 21 objectClass: organizationalPerson 22 objectClass: iNetOrgPerson 23 telephonenumber: +1 415 555 0001 24 mail: Peter.Michaels@aaa.com 25 userpassword: Peter123 26
Diese LDIF-Datei besteht aus den folgenden Bestandteilen:
Komponente |
Beschreibung |
---|---|
Versionsbezeichner |
Die erste Zeile einer LDIF-Datei enthält die Version. Null oder mehr Zeilen sind zwischen dem Doppelpunkt und der Versionsnummer zulässig, die derzeit als "1" definiert ist. Falls die Versionszeile fehlt, kann jede Anwendung, welche die LDIF-Datei verarbeitet, von der Version 0 für die Datei ausgehen. Es ist außerdem möglich, dass die LDIF-Datei als syntaktisch falsch abgelehnt wird. Dienstprogramme von NetIQ, die LDIF verarbeiten, gehen von der Dateiversion 0 aus, wenn die Versionszeile fehlt. |
Bezeichner für den eindeutigen Namen |
Die erste Zeile jedes Inhaltsdatensatzes (die Zeilen 2, 6, 11 und 16 im obigen Beispiel) bezeichnet den eindeutigen Namen (DN) des repräsentierten Eintrags. Der DN-Bezeichner muss eines der folgenden beiden Formate aufweisen:
|
Zeilenbegrenzungszeichen |
Das Zeilentrennzeichen kann ein Zeilenvorschub oder eine Kombination aus Zeilenumschaltung/Zeilenvorschub darstellen. Dies behebt eine allgemeine Inkompatibilität zwischen Linux- und Solaris-Textdateien, die einen Zeilenvorschub als Zeilentrennzeichen verwenden, und MS-DOS*- und Windows-Textdateien, die eine Kombination aus Zeilenumschaltung/Zeilenvorschub als Zeilentrennzeichen verwenden. |
Datensatzbegrenzungszeichen |
Leerzeilen (die Zeilen 5, 10, 15 und 26 im obigen Beispiel) werden als Datensatzbegrenzungszeichen verwendet. Jeder Datensatz in einer LDIF-Datei, einschließlich des letzten Datensatzes, muss mit einem Datensatzbegrenzungszeichen beendet werden (eine oder mehrere Leerzeilen). Zwar akzeptieren einige Implementierungen eine LDIF-Datei ohne abschließendes Datensatzbegrenzungszeichen, aber für die LDIF-Spezifikation ist dies erforderlich. |
Attributwertbezeichner |
Alle anderen Zeilen in einem Inhaltsdatensatz sind Wertbezeichner. Wertbezeichner müssen eines der folgenden drei Formate aufweisen:
|
LDIF-Änderungsdatensätze enthalten Änderungen, die an einem Directory vorgenommen werden sollen. Jede LDAP-Aktualisierungsoperation (Hinzufügen, Löschen, Ändern und DN ändern) können in einem LDIF-Änderungsdatensatz dargestellt werden.
LDIF-Änderungsdatensätze verwenden dasselbe Format für den Bezeichner des eindeutigen Namens, den Attributwertbezeichner und das Datensatzbegrenzungszeichen wie LDIF-Inhaltsdatensätze. (Weitere Informationen hierzu finden Sie unter LDIF-Inhaltsdatensätze.) Das Vorhandensein eines changetype-Felds unterscheidet einen LDIF-Änderungsdatensatz von einem LDIF-Inhaltsdatensatz. Ein changetype-Feld identifiziert die durch den Änderungsdatensatz angegebene Operation.
Für ein changetype-Feld sind die folgenden fünf Formate möglich:
Formular |
Beschreibung |
---|---|
changetype:add |
Ein Schlüsselwort, das für den Änderungsdatensatz eine LDAP-Operation zum Hinzufügen festlegt. |
changetype:delete |
Ein Schlüsselwort, das für den Änderungsdatensatz eine LDAP-Operation zum Löschen festlegt. |
changetype: moddn |
Ein Schlüsselwort, das für den Änderungsdatensatz eine LDAP-Operation zum Ändern des DN festlegt, falls der LDIF-Prozessor an den LDAP-Server als Version 3-Client gebunden ist, oder eine Operation zum Ändern des RDN, falls der LDIF-Prozessor an den LDAP-Server als Version 2-Client gebunden ist. |
changetype: modrdn |
Ein Synonym für den moddn-Änderungstyp. |
changetype:modify |
Ein Schlüsselwort, das für den Änderungsdatensatz eine LDAP-Operation zum Ändern festlegt. |
Ein Änderungsdatensatz vom Typ „Add“ (Hinzufügen) ähnelt einem Inhaltsänderungsdatensatz (siehe LDIF-Inhaltsdatensätze), verfügt jedoch genau vor den Attributwertfeldern zusätzlich über das Feld „changetype: add“.
Alle Datensätze müssen den gleichen Typ aufweisen. Es ist nicht möglich, Inhalts- und Änderungsdatensätze zu mischen.
1 version: 1 2 dn: c=US 3 changetype: add 4 objectClass: top 5 objectClass: country 6 7 dn: l=San Francisco, c=US 8 changetype: add 9 objectClass: top 10 objectClass: locality 11 st: San Francisco 12 14 dn: ou=Artists, l=San Francisco, c=US 15 changetype: add 16 objectClass: top 17 objectClass: organizationalUnit 18 telephoneNumber: +1 415 555 0000 19 20 dn: cn=Peter Michaels, ou=Artists, l=San Francisco, c=US 21 changetype: add 22 sn: Michaels 23 givenname: Peter 24 objectClass: top 25 objectClass: person 26 objectClass: organizationalPerson 27 objectClass: iNetOrgPerson 28 telephonenumber: +1 415 555 0001 29 mail: Peter.Michaels@aaa.com 30 userpassword: Peter123 31
Ein delete-Änderungsdatensatz bezeichnet das Löschen eines Eintrags, weshalb für einen delete-Änderungsdatensatz nur die Felder für den Bezeichner des eindeutigen Namens und der delete-Änderungstyp erforderlich sind.
Es folgt ein Beispiel für eine LDIF-Datei, mit der die vier Einträge gelöscht werden, die erstellt wurden von der LDIF-Datei im Abschnitt Der Änderungstyp "Add".
WICHTIG:Um Einträge zu löschen, die Sie zuvor hinzugefügt haben, kehren Sie die Reihenfolge der Einträge um. Wenn dies nicht erfolgt, tritt beim Löschvorgang ein Fehler auf, weil die Containereinträge nicht leer sind.
1 version: 1 2 dn: cn=Peter Michaels, ou=Artists, l=San Francisco, c=US 3 changetype: delete 4 5 dn: ou=Artists, l=San Francisco, c=US 8 changetype: delete 9 10 dn: l=San Francisco, c=US 11 changetype: delete 12 13 dn: c=US 14 changetype: delete 15
Mit dem modify-Änderungstyp legen Sie das Hinzufügen, Löschen und Ersetzen von Attributwerten für einen bereits vorhandenen Eintrag fest. Änderungen weisen eines der folgenden drei Formate auf:
Element |
Beschreibung |
---|---|
add: Attributtyp |
Ein Schlüsselwort, das angibt, dass nachfolgende Attributwertbezeichner für den Attributtyp zum Eintrag hinzugefügt werden sollen. |
delete: Attributtyp |
Ein Schlüsselwort, das angibt, dass Werte des Attributtyps gelöscht werden sollen. Wenn Attributwertbezeichner auf das delete-Feld folgen, werden die angegebenen Werte gelöscht. Wenn keine Attributwertbezeichner auf das delete-Feld folgen, werden alle Werte gelöscht. Weist das Attribut keine Werte auf, schlägt diese Operation fehl, aber der gewünschte Effekt wird dennoch erzielt, weil für das Attribut keine zu löschenden Werte vorhanden waren. |
replace: Attributtyp |
Ein Schlüsselwort, das angibt, dass Werte des Attributtyps ersetzt werden sollen. Alle Attributwertbezeichner, die auf das replace-Feld folgen, werden zu den neuen Werten für den Attributtyp. Wenn keine Attributwertbezeichner auf das replace-Feld folgen, werden die aktuellen Werte durch leere Werte ersetzt (wodurch das Attribut gelöscht wird). Im Gegensatz zum delete-Änderungsbezeichner wird die Ersetzung dennoch erfolgreich ausgeführt, wenn das Attribut keine Werte aufweist. Das Endergebnis ist in beiden Fällen identisch. |
Im nachfolgenden Beispiel für einen modify-Änderungstyp wird zum Eintrag cn=Peter Michaels eine zusätzliche Telefonnummer hinzugefügt.
1 version: 1 2 dn: cn=Peter Michaels, ou=Artists, l=San Francisco, c=US 3 changetype: modify 4 # add the telephone number to cn=Peter Michaels 4 add: telephonenumber 5 telephonenumber: +1 415 555 0002 6
So wie mehrere Änderungen in einer einzigen LDAP-Änderungsanforderung kombiniert werden können, können Sie mehrere Änderungen in einem einzigen LDIF-Datensatz angeben. Mit einer Zeile, die nur einen Bindestrich (-) aufweist, wird das Ende der Attributwertspezifikationen für jeden Änderungsbezeichner markiert.
Die folgende LDIF-Beispieldatei enthält verschiedene Änderungen:
1 version: 1 2 3 # An empty line to demonstrate that one or more 4 # line separators between the version identifier 5 # and the first record is legal. 6 7 dn: cn=Peter Michaels, ou=Artists, l=San Francisco, c=US 8 changetype: modify 9 # Add an additional telephone number value. 10 add: telephonenumber 11 telephonenumber: +1 415 555 0002 12 - 13 # Delete the entire fascimiletelephonenumber attribute. 14 delete: facsimileTelephoneNumber 15 - 16 # Replace the existing description (if any exists) 17 # with two new values. 18 replace: description 19 description: guitar player 20 description: solo performer 21 - 22 # Delete a specific value from the telephonenumber 23 # attribute. 24 delete: telephonenumber 25 telephonenumber: +1 415 555 0001 26 - 27 # Replace the existing title attribute with an empty 28 # set of values, thereby causing the title attribute to 29 # be removed. 30 replace: title 31 - 32
Mit dem Änderungstyp "modify DN" können Sie einen Eintrag umbenennen, verschieben, oder beides. Dieser Änderungstyp besteht aus zwei erforderlichen Feldern und einem optionalen Feld.
Feld |
Beschreibung |
---|---|
newrdn (erforderlich) |
Liefert den neuen Namen für den Eintrag, der beim Verarbeiten dieses Datensatzes zugewiesen wird. Der newrdn-Bezeichner muss eines der folgenden beiden Formate aufweisen:
Der newrdn-Bezeichner ist in allen LDIF-Datensätzen des Änderungstyps "modify DN" erforderlich. |
deleteoldrdn (erforderlich) |
Der deleteoldrdn-Bezeichner ist eine Flagge, die anzeigt, ob der alte RDN durch den "newrdn" ersetzt werden oder aber beibehalten werden soll. Dieser Bezeichner weist eines der folgenden Formate auf:
|
newsuperior (optional) |
Der newsuperior-Bezeichner liefert den Namen des neuen übergeordneten Objekts, der beim Verarbeiten des "modify DN"-Datensatzes dem Eintrag zugewiesen wird. Der newsuperior-Bezeichner muss eines der folgenden beiden Formate aufweisen:
Der newsuperior-Bezeichner ist in LDIF-Datensätzen des Änderungstyps "modify DN" optional. Er wird nur verwendet, wenn Sie dem Eintrag ein neues übergeordnetes Objekt zuweisen möchten. |
Es folgt ein Beispiel für den Änderungstyp „modify DN“, das veranschaulicht, wie ein Eintrag umbenannt wird:
1 version: 1 2 3 # Rename ou=Artists to ou=West Coast Artists, and leave 4 # its old RDN value. 5 dn: ou=Artists,l=San Francisco,c=US 6 changetype: moddn 7 newrdn: ou=West Coast Artists 8 deleteoldrdn: 1 9
Es folgt ein Beispiel für den Änderungstyp „modify DN“, das veranschaulicht, wie ein Eintrag verschoben wird:
1 version: 1 2 3 # Move cn=Peter Michaels from 4 # ou=Artists,l=San Francisco,c=US to 5 # ou=Promotion,l=New York,c=US and delete the old RDN. 5 dn: cn=Peter Michaels,ou=Artists,l=San Francisco,c=US 6 changetype: moddn 7 newrdn: cn=Peter Michaels 8 deleteoldrdn: 1 9 newsuperior: ou=Promotion,l=New York,c=US 10
Es folgt ein Beispiel für den Änderungstyp „modify DN“, das veranschaulicht, wie ein Eintrag gleichzeitig verschoben und umbenannt wird:
1 version: 1 2 3 # Move ou=Promotion from l=New York,c=US to 4 # l=San Francisco,c=US and rename it to 5 # ou=National Promotion. 5 dn: ou=Promotion,l=New York,c=US 6 changetype: moddn 7 newrdn: ou=National Promotion 8 deleteoldrdn: 1 9 newsuperior: l=San Francisco,c=US 10
WICHTIG:Die RDN-Änderungsoption von LDAP 2 unterstützt das Verschieben von Einträgen nicht. Wenn Sie versuchen, einen Eintrag über die LDIF-Syntax newsuperior mit einem LDAP 2-Client zu verschieben, tritt ein Fehler bei der Anforderung auf.
Um eine Zeile in einer LDIF-Datei umzubrechen, fügen Sie einfach ein Zeilentrennzeichen (einen Zeilenvorschub oder eine Kombination aus Zeilenumschaltung/Zeilenvorschub) gefolgt von einem Leerzeichen an der Stelle ein, an der die Zeile umgebrochen werden soll. Wenn die LDIF-Analyse ein Leerzeichen am Beginn der Zeile findet, bedeutet dies, dass die restlichen Daten in der Zeile mit den Daten in der vorherigen Zeile verkettet werden müssen. Das vorangestellte Leerzeichen wird dann verworfen.
Sie sollten Zeilen nicht in der Mitte eines aus mehreren Byte bestehenden UTF-8-Zeichens umbrechen.
Es folgt ein Beispiel für eine LDIF-Datei mit einer umgebrochenen Zeile (siehe Zeile 13 und 14):
1 version: 1 2 dn: cn=Peter Michaels, ou=Artists, l=San Francisco, c=US 3 sn: Michaels 4 givenname: Peter 5 objectClass: top 6 objectClass: person 7 objectClass: organizationalPerson 8 objectClass: iNetOrgPerson 9 telephonenumber: +1 415 555 0001 10 mail: Peter.Michaels@aaa.com 11 userpassword: Peter123 12 description: Peter is one of the most popular music 13 ians recording on our label. He’s a big concert dr 14 aw, and his fans adore him. 15
Passwörter mit Hash werden in der LDIF-Datei als base64-Daten dargestellt. Nach dem Attributnamen userpassword muss die Bezeichnung der für das Hashing des Passworts verwendeten Verschlüsselung angegeben werden. Diese Bezeichnung muss in geschweifte Klammern „{ }“ gesetzt werden, wie im folgenden Beispiel dargestellt:
Für Passwörter mit SHA-Hashing:
1 version: 1 2 dn: cn=Peter Michaels, ou=Artists, l=San Francisco, c=US 3 sn: Michaels 4 userpassword: {SHA}xcbdh46ngh37jsd0naSFDedjAS30dm5 objectclass: inetOrgPerson
Für Passwörter mit SSHA-Hashing:
1 version: 1 2 dn: cn=Peter Michaels, ou=Artists, l=San Francisco, c=US 3 sn: Michaels 4 userpassword: {SSHA}sGs948DFGkakdfkasdDF34DF4dS3skl5DFS5 objectclass: inetOrgPerson
Für Passwörter mit MD5-Hashing:
1 version: 1 2 dn: cn=Peter Michaels, ou=Artists, l=San Francisco, c=US 3 sn: Michaels 4 userpassword: {MD5}a45lkSDF234SDFG62dsfsf2DG2QEvgdmnk4305 objectclass: inetOrgPerson