Формат обмена данными 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