LDIF

LDAP Data Interchange Format (LDIF, Формат обмена данными LDAP) — формат представления записей службы каталогов или их изменений в текстовой форме. Записи каталога или их изменения представляются набором LDIF-записей, по одной на каждую запись каталога или изменение. LDIF-файл может содержать записи только одного типа, то есть только представление записей каталога или только представление изменений записей каталога.

LDIF был разработан в начале 90-х годов Тимом Хоузом (en:Tim Howes), Марком Смитом (Mark C Smith) и Гордоном Гудом (Gordon Good) в Мичиганском университете и был доработан и дополнен в конце 90-х для использования с LDAP версии 3\. Эта, более поздняя версия формата, получила номер версии 1, была официально специфицирована IETF в RFC 2849, опубликована в июне 2000 года и в настоящее время имеет статус предложенного стандарта.

За прошедшие годы предложено множество расширений LDIF. Одно из них официально специфицировано IETF и опубликовано в RFC 4525. Также ожидаются публикации других расширений.

## Содержание

* 1 Формат записей каталога
* 2 Утилиты, использующие LDIF
* 3 Ограничения LDIF
* 4 Поля LDIF
* 5 Примеры LDIF
* 6 RFC
* 7 См. также

## Формат записей каталога

[править | править код]

Записи каталога представляются группами строк, разделенных пустой строкой, при этом каждая строка в группе представляет отдельное значение атрибута записи. Первая строка в группе должна представлять уникальное имя записи. Значение атрибута записывается в 7-битной кодировке ASCII и отделяется от его имени символом «:». Значения, не подходящие под эту кодировку, записываются в кодировке base64 и отделяются от имени атрибута символами «::». Также значение атрибута можно задать из внешнего ресурса, указав его единый указатель и отделяя от имени атрибута символами «:<». Схема file:// обязательна для всех реализаций и означает, что значение атрибута без изменений читается из указанного файла.

dn: <уникальное_имя>
<имя_атрибута>: <значение_атрибута>
<имя_атрибута>:: <base64_значение_атрибута>
<имя_атрибута>:< <url>

dn: <уникальное_имя>
<имя_атрибута>: <значение_атрибута>
<имя_атрибута>: <значение_атрибута>

## Утилиты, использующие LDIF

[править | править код]

* Пакет OpenLDAP включает утилиты, использующие LDIF для экспорта записей LDAP-сервера (`ldapsearch`), добавление записей на LDAP-сервер (`ldapadd`) и модификацию записей LDAP-сервера (`ldapmodify`).
* Netscape Communicator и Mozilla Application Suite используют LDIF в качестве одного из форматов импорта и экспорта адресных книг. Следует отметить, что Yahoo! Mail, также использующий LDIF для экспорта адресной книги, неправильно кодирует некоторые символы. Например, амперсанд (&), который должен использоваться как есть, кодируется как специальный символ HTML (&amp;). В результате, «John & Jane Doe» из адресной книги Yahoo! Mail становятся «John &amp; Jane Doe» в адресной книге например Thunderbird'а.
* Microsoft Windows 2000 Server и Windows Server 2003 включают основанную на LDIF утилиту командной строки (`LDIFDE`), предназначенную для импорта и экспорта данных Active Directory.
* JXplorer — кроссплатформенное приложение с открытым исходным кодом, позволяющее просматривать LDIF-файлы и вносить простые изменения.

## Ограничения LDIF

[править | править код]

Значения многозначных атрибутов не могут быть непосредственно заменены. Необходимо сначала удалить значения атрибута, а затем использовать «add:» несколько раз чтобы вставить все необходимые значения.

## Поля LDIF

[править | править код]

dn: уникальное имя

Относится к имени, однозначно идентифицирующему запись каталога.

dc: доменное имя

Относится к каждому домену из полного имени. Например www.google.com должно быть записано как DC=www,DC=google,DC=com

ou: organizational unit

Относится к организационному подразделению (иногда — к группе пользователей), частью которого является пользователь. Если пользователь относится более чем к одной группе, то это можно записать в виде OU= Lawyer,OU= Judge.

cn: common name

Относится к имени объекта (имя человека; переговорной комнаты; рецепту; названию должности), о котором выполнен запрос.

## Примеры LDIF

[править | править код]

Пример простой записи каталога с несколькими атрибутами:

dn: cn=The Postmaster,dc=example,dc=com
objectClass: organizationalRole
cn: The Postmaster

Пример изменения значений нескольких однозначных атрибутов двух разных записей каталога (формат, используемый в утилите Microsoft LDIFDE):

dn: CN=John Smith,OU=Legal,DC=example,DC=com
changetype: modify
replace:employeeID
employeeID: 1234

replace:employeeNumber
employeeNumber: 98722

replace: extensionAttribute6
extensionAttribute6: JSmith98

dn: CN=Jane Smith,OU=Accounting,DC=example,DC=com
changetype: modify
replace:employeeID
employeeID: 5678

replace:employeeNumber
employeeNumber: 76543

replace: extensionAttribute6
extensionAttribute6: JSmith14

Примечание: Символ «-» между каждым изменением значения атрибута обязателен. Каждая запись каталога должна заканчиваться символом «-», после которого должна идти пустая строка. Последний символ «-» также обязателен.

Пример добавления номера телефона существующего пользователя:

dn: cn=Peter Michaels, ou=Artists, l=San Francisco, c=US
changetype: modify
add: telephonenumber
telephonenumber: +1 415 555 0002

## RFC

[править | править код]

* RFC 2849 — The LDAP Data Interchange Format (LDIF) — Technical Specification
* RFC 4510 — Lightweight Directory Access Protocol (LDAP): Technical Specification Road Map
* RFC 4525 — LDAP Modify-Increment Extension

## См. также

[править | править код]

* Sun Java™ System Directory Server 5 : LDIF Reference
* MSDN : Windows 2003 : Using the LDIFDE Tool
* MSDN : Active Directory : LDIF Scripts
* SIDVault — Windows LDAP server — Allows Easy Importing of LDIF files