В этой 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 отделяются друг от друга пустыми строками.
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.
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 виде, либо взяты из файлов, так же, как и в сведениях о записях. Строки в сведениях об изменениях могут быть разбиты на несколько по тем же правилам, что и в сведениях о записях.
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
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", Good, G., RFC 2849.
Закладки на сайте Проследить за страницей |
Created 1996-2024 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |