Linux - статьи



              

Добавляем данные, собственно


Добавление записей в базу данных производится (как вариант) с помощью утилиты ldapadd. Она воспринимает на входе файл специального формата — так называемый LDIF, LDAP Data Interchange Format (эти файлы так и принято именовать, с расширением ldif). Нетрудно догадаться, что такие или подобные файлы будут управлять всеми операциями с данными.

Вот примерный, из документации, файл, который вы можете создать в любом тестовом редакторе, например в vim (параметры вашего домена, вместо comizdat.com, подставьте по месту; а можете и не подставлять — мы не обидимся).

dn: dc=comizdat,dc=com
objectclass: dcObject
objectclass: organization
o: Comizdat
dc: comizdat

dn: cn=Manager,dc=comizdat,dc=com
objectclass: organizationalRole
cn: Manager

Первая строка каждого блока определяет так называемый узел поиска — DIT, Data Information Tree Node. От этого узла будет производиться поиск. Собственно, в приведенном примере добавляется две записи: одна описывает организацию Comizdat, вторая — тип работника (organizationalRole) Manager.

Вообще-то файл ldif не предназначен для набора руками, так что будьте начеку. Во-первых, все пробелы являются значимыми и не будут удаляться ни в начале, ни в конце строки. Если вы поставите лишний пробел в имени пользователя, то потом будете долго его искать. Один пробел или табуляция в конце строки обозначает перенос строки на следующую, с чем тоже нужно быть осторожным.

Особый формат имеют также и бинарные данные: они помечаются дополнительным двоеточием и должны быть закодированы по Base64 (ну, я надеюсь, вы можете перекодировать в уме в этот форматJ). Короче, для генерации ldif-файла лучше всего пользоваться программной оболочкой, которая контролирует эти тонкости и не допустит ошибок. Сам формат ldif-файла хорошо описан здесь: .

Все записи данных обязательно относятся к одному или нескольким классам, задаваемых параметрами objectClass. Класс задает набор допустимых атрибутов (полей), некоторые из которых обязательные, а некоторые — опциональные. Для полей заданы формат, правила сортировки, тип, кодировка и т.д. Для атрибутов может быть определено несколько наименований, обычно два — полное и сокращенное. К примеру, поля c, o, ou являются сокращениями от countryName, organizationName и organizationUnitName.

Кроме того, что файл ldif имеет общий формат, он еще должен удовлетворять схемам, которые описывают допустимые классы и их атрибуты. Распространенные схемы обычно хранятся в каталоге /usr/local/etc/openldap/schema и имеют расширение *.schema. Другие схемы поставляются с пакетами, их использующими: например, DHCP-демон поставляется со схемой dhcp.schema. Схемы состоят из двух частей: сначала определяются атрибуты с уникальными именами, из которых впоследствии конструируются классы.

Прежде чем использовать в своей базе данных какую-нибудь схему, вы должны включить ее в файл конфигурации slapd.conf с помощью команды include. Например, для стандартных адресных записей в файл конфигурации включена запись include /usr/local/etc/openldap/schema/core.schema.

При создании нового класса от уже существующего, наследуются существующие поля и добавляются новые. Сами атрибуты тоже упорядочены — наподобие того как упорядочены суффиксы в системе имен DNS: сначала записи группируются по более общему признаку, например по стране, потом — по организации и т.д. Существует две распространенные классификации: глобальная (имя — домен) и организационная (имя — отдел — организация — страна). Естественно, что в вашей схеме группировка может быть совсем другой. В конце концов, самым достоверным документом по атрибутам являются сами схемы — и прежде чем описывать собственные классы, я бы посоветовал как следует построчно разобраться с core.schema.

Теперь вы можете приписать этот файл в вашу базу данных и протестировать наличие новой записи, связанной с вашим доменом:

ldapadd -x -D “cn=Manager,dc=comizdat,dc=com” -W -f 1.ldif
lpadsearch -x -b ‘dc=comizdat,dc=com’  ’(objectclass=*)’




Содержание  Назад  Вперед