LDIF(5)

НАЗВАНИЕ

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

ОПИСАНИЕ

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

В этой man-странице приведено описание основных моментов LDIF. Формальная спецификация LDIF дана в RFC 2849.

СВЕДЕНИЯ О ЗАПИСЯХ

LDIF-сведения о записях используются для представления записей каталога. Общая форма сведений о записи:

	dn: <distinguished name>
	<attrdesc>: <attrvalue>
	<attrdesc>: <attrvalue>
	<attrdesc>:: <base64-encoded-value>
	<attrdesc>:< <URL>
	...

Значение атрибута может быть указано как текст UTF-8, либо как данные, закодированные в base64, либо для указания места расположения значения атрибута может быть предоставлен URI.

Строка может быть продолжена путём помещения в начало следующей строки одного символа пробела или табуляции, например:

	dn: cn=Barbara J Jensen,dc=exam
	 ple,dc=com

Строки, начинающиеся с символа решётки ('#'), игнорируются.

Несколько значений одного атрибута указываются в отдельных строках, например:

	cn: Barbara J Jensen
	cn: Babs Jensen

Если значение атрибута содержит непечатный символ, или начинается с пробела или двоеточия ':', за полем <attrtype> следуют двойное двоеточие и значение, закодированное в нотации base64. Например, значение " begins with a space" будет закодировано так:

	cn:: IGJlZ2lucyB3aXRoIGEgc3BhY2U=

Если значение атрибута располагается в файле, за полем <attrtype> следуют знаки ':<' и URI со схемой file:. Например, значение, содержащееся в файле /tmp/value, будет указано так:

	cn:< file:///tmp/value

Могут также поддерживаться другие схемы URI (ftp, http).

Несколько записей в одном файле LDIF отделяются друг от друга пустыми строками.

ПРИМЕР СВЕДЕНИЙ О ЗАПИСИ

Вот пример LDIF-файла, содержащего три записи:

	dn: cn=Barbara J Jensen,dc=example,dc=com
	cn: Barbara J Jensen
	cn: Babs Jensen
	objectclass: person
	description:< file:///tmp/babs
	sn: Jensen

	dn: cn=Bjorn J Jensen,dc=example,dc=com
	cn: Bjorn J Jensen
	cn: Bjorn Jensen
	objectclass: person
	sn: Jensen

	dn: cn=Jennifer J Jensen,dc=example,dc=com
	cn: Jennifer J Jensen
	cn: Jennifer Jensen
	objectclass: person
	sn: Jensen
	jpegPhoto:: /9j/4AAQSkZJRgABAAAAAQABAAD/2wBDABALD
	 A4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQ
	 ERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVG
	...

Обратите внимание, что значение атрибута description записи Barbara Jensen считывается из file:///tmp/babs, а значение атрибута jpegPhoto записи Jennifer Jensen закодировано с использованием base64.

СВЕДЕНИЯ ОБ ИЗМЕНЕНИЯХ

LDIF-сведения об изменениях используются для представления запросов на изменение каталога. Каждое сведение об изменении начинается со строки, указывающей уникальное имя изменяемой записи:

	dn: <distinguishedname>
	changetype: <[modify|add|delete|modrdn]>

Наконец, даётся собственно информация об изменении, формат которой зависит от того, какого рода изменение указано выше. Для changetype modify форматом будет один или несколько из приведённых далее фрагментов:

	add: <attributetype>
	<attrdesc>: <value1>
	<attrdesc>: <value2>
	...
	-

Либо, для модификации replace:

	replace: <attributetype>
	<attrdesc>: <value1>
	<attrdesc>: <value2>
	...
	-

Если строки со значениями атрибута для замещения не заданы, будут удалены все значения атрибута attributetype (при его наличии в записи).

Либо, для модификации delete:

	delete: <attributetype>
	<attrdesc>: <value1>
	<attrdesc>: <value2>
	...
	-

Если строки со значениями атрибута для удаления не заданы, будут удалены все значения атрибута attributetype.

Фомат для changetype add:

	<attrdesc1>: <value1>
	<attrdesc1>: <value2>
	...
	<attrdescN>: <value1>
	<attrdescN>: <value2>

Формат для changetype modrdn или moddn:

	newrdn: <newrdn>
	deleteoldrdn: 0 | 1
	newsuperior: <DN>

Здесь значение 1 в строке deleteoldrdn указывает, что значения атрибутов, формировавшие прежний rdn, должны быть удалены из записи, а значение 0 - что эти значения должны быть оставлены в записи в качестве неотличительных значений атрибутов. Строка newsuperior является опциональной. Если она задана, в ней указывается новая вышестоящая запись, к которой будет перемещена изменяемая запись.

Для changetype delete никакой дополнительной информации указывать не требуется.

Имейте ввиду, что значения атрибутов могут быть представлены в закодированном в base64 виде, либо взяты из файлов, так же, как и в сведениях о записях. Строки в сведениях об изменениях могут быть разбиты на несколько по тем же правилам, что и в сведениях о записях.

ПРИМЕР СВЕДЕНИЙ ОБ ИЗМЕНЕНИЯХ

В следующем LDIF-файле присутствуют сведения об изменениях каждого типа:

	dn: cn=Babs Jensen,dc=example,dc=com
	changetype: add
	objectclass: person
	objectclass: extensibleObject
	cn: babs
	cn: babs jensen
	sn: jensen

	dn: cn=Babs Jensen,dc=example,dc=com
	changetype: modify
	add: givenName
	givenName: Barbara
	givenName: babs
	-
	replace: description
	description: the fabulous babs
	-
	delete: sn
	sn: jensen
	-

	dn: cn=Babs Jensen,dc=example,dc=com
	changetype: modrdn
	newrdn: cn=Barbara J Jensen
	deleteoldrdn: 0
	newsuperior: ou=People,dc=example,dc=com

	dn: cn=Barbara J Jensen,ou=People,dc=example,dc=com
	changetype: delete

ВЫРАЖЕНИЕ INCLUDE

Разборщик LDIF был расширен: добавлена поддержка выражения include для ссылки на другие файлы LDIF. Выражение include должно отделяться от других сведений пустой строкой. Файл, на который делается ссылка, указывается с использованием URI со схемой file:. Всё содержимое данного файла встраивается в оригинальный файл, как если бы оно было его составной частью. Также могут поддерживаться URI с другими схемами. Пример:

	dn: dc=example,dc=com
	objectclass: domain
	dc: example

	include: file:///tmp/example.com.ldif

	dn: dc=example,dc=org
	objectclass: domain
	dc: example

Данный функционал не является составной частью спецификации LDIF, данной в RFC 2849, однако ожидается, что он появится в будущих версиях этой спецификации. Он поддерживается командами ldapadd(1), ldapmodify(1) и slapadd(8).

СМОТРИТЕ ТАКЖЕ

ldap(3), ldapsearch(1), ldapadd(1), ldapmodify(1), slapadd(8), slapcat(8), slapd-ldif(5).

"Формат обмена данными LDAP", Good, G., RFC 2849.

ПРИЗНАНИЕ ЗАСЛУГ

Программное обеспечение OpenLDAP разработано и поддерживается проектом OpenLDAP <http://www.openldap.org/>. Программное обеспечение OpenLDAP является производным от релиза 3.3 LDAP Мичиганского Университета.

OpenLDAP 2.4.47 LDIF(5) 2018/12/19