Формат обмена данными LDAP

LDIF (аббревиатура от английского языка для L DAP D ата I nterchange F Ormat ) является ASCII -На формат файла для представления информации из LDAP - каталогов .

LDAP описывает только протокол связи для служб каталогов; внутреннее представление данных в каталоге не указано и поэтому отличается для конкретных реализаций различных производителей. Чтобы обеспечить простой обмен данными даже между разнородными каталогами, в качестве формата обмена был указан LDIF.

Как и в случае с LDAP, при разработке LDIF были приняты меры, чтобы сделать формат как можно более простым. Из-за ограничения чисто текстового представления формат остается читабельным и, следовательно, легко интерпретируемым. Содержимое файла закодировано в ASCII. Как только специальные символы, такие как умляуты, включены, данные должны храниться в кодировке base64 (некоторые инструменты и реализации сервера также поддерживают некодированные значения). Имена атрибутов отмечены двоеточием ( attribut:: base64-Wert).

Объект LDAP описывается несколькими строками LDIF. Он всегда начинается с отличительного имени dn, которое указывает абсолютную позицию в дереве LDAP. За ним следует один или несколько классов объектов, которые определяют, какие атрибуты разрешены или требуются. Далее следуют пары атрибут / значение, которые представляют фактическое содержимое. Многозначные атрибуты указываются несколько раз, по одному значению в строке. Определение объекта завершается пустой строкой. Строка, начинающаяся с решетки (#), является комментарием и игнорируется инструментами. Длинные строки можно разорвать, указав разрыв строки с последующим пробелом.

Форматы LDIF

Существует два основных формата LDIF, которые нельзя смешивать в файле:

  • Содержимое LDIF: описывает записи как таковые с атрибутами
  • Изменение LDIF: описывает изменения записей и их атрибутов. Для каждой записи можно указать несколько разных операторов.

Примеры

Пример: файл содержимого LDIF company structure.ldif с пятью объектами LDAP :

 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

от: Томас Бендлер: Linux LDAP-HOWTO .

Пример: файл содержимого LDIF с разрывом строки:

 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.

Пример: файл изменений LDIF с комментарием:

 # 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

Смотри тоже

веб ссылки

  • RFC 2849 - Формат обмена данными LDAP (LDIF) , июнь 2000 г.
  • Томас Бендлер: Linux LDAP Howto