 | Конфигурация LDAP
Когда используется LDAP
В принципе, по своим целям Lightweight Directory Access Protocol похож на NIS. Оба распределяют некоторую стуктурированную информацию о настойках сети от клиента к серверу; однако LDAP идет дальше в иерархическом структурировании того, каким клиентам какую информация нужно предоставлять, перенаправляя запросы другим LDAP-серверам, куда необходимо, и выстраивая механизмы безопасности. Более того, LDAP дает клиентам механизмы и утилиты для обновления информации, содержащейся на LDAP-серверах, которые, в свою очередь, распространяют эти данные тем другим клиентам, что будут запрашивать их (конечно, это зависит от прав доступа).
Установка
Перед запуском OpenLDAP (the Free Software реализация, широко используемая на Linux, хотя существуют и коммерческие разработки), вам следует установить или проверить, установлены ли следующие необходимые библиотеки:
- OpenSSL Transport Layer Security (TLS) можно получить на OpenSSL Project (или через способы установки вашего дистрибутива Linux).
- Поддержка Kerberos Authentication Services необязательна, но их наличие очень желательно. Пойдет либо MIT Kerberos, либо Heimdal Kerberos.
- Simple Authentication и Security Layer может быть установлена как часть основного дистрибутива, но также может быть получено Cyrus SASL as well.
-
Рекомендуется иметь Sleepycat Software Berkeley DB, хотя, вероятно, другие реализации DBM тоже подойдут.
- Posix нити и TCP wrappers если и не обязательны, то желательны.
После того, как эти предварительные условия соблюдены, скачайте библиотеку OpenLDAP и совершите более-менее привычный танец:
Listing 7. Обычное камлание для установки OpenLDAP
% ./configure
% make depend
% make
% make test # make sure things went OK
% su root -c 'make install'
|
После базовой установки, следует настроить конфигурацию slapd, обычно расположенную в /usr/local/etc/openldap/slapd.conf. Установка должна содержать компоненты вашего домена:
Listing 8. Компоненты домена, включаемые в slapd.conf
database bdb
suffix "dc=eng,dc=uni,dc=edu,dc=eu"
rootdn "cn=Manager,dc=eng,dc=uni,dc=edu,dc=eu"
rootpw <secret>
directory /usr/local/var/openldap-data
|
Для того, чтобы найти значение <secret> используйте утилита slappasswd, а затем берите эту base64-зашифрованную строку в качестве вашего "<secret>":
Listing 9. Раскрытие вашего "секрета"
% slappasswd
New password: *******
Re-enter new password: ********
{SSHA}YzPqL5Jio2+17NFIy/pAz8pqS5Ko13fH
|
За большей информацией о правах доступа, репликации и других опциях, которые задаются в slapd.conf, обратитесь к manpages.
Запуск демона slapd daemon весьма схож с запуском любого другого демона; проверить, запущен ли он, можно с помощью ldapsearch:
Listing 10. Проверка на то, запущен ли slapd
su root -c /usr/local/libexec/slapd
ldapsearch -x -b '' -s base '(objectclass=*)' namingContexts
|
Если все прошло успешно, вы увидите что-нибудь вроде этого:
Listing 11. Отклик работающего slapd
dn:
namingContexts: dc=eng,dc=uni,dc=edu,dc=eu
|
Добавление данных в файл LDIF
Формат данных, используемых в LDAP, является двоичным, а для экспорта и импорта данных в базу данных LDAP используется ASCII сериализация, которая называется LDAP Data Interchange Format (LDIF). Двоичные данные в LDIF представляются base64 кодированном виде. OpenLDAP содершит утилиты, экспортирующие данные от LDAP-сервером в LDIF (ldapsearch), импортирующие данные из LDIF на LDAP-серверы (ldapadd), и применяющие набор изменений, описанных в LDIF, к LDAP-серверам (ldapmodify и ldapdelete).
Более того, LDIF -- один из форматов, использующихся в импортировании и экспортировании данных адресной книги для Mozilla Application Suite и других пользовательских программ прикладного уровня. Даже Microsoft Windows 2000 Server и Windows Server 2003 содержат утилиту LDIF, LDIFDE, для передачи данных из Active Directory и обратно.
Чтобы вручную добавить информацию на LDAP-сервер, сеачала создайте LDIF-файл:
Listing 12. Создание примерного файла LDIF, example.ldif
dn: dc=example,dc=com
objectclass: dcObject
objectclass: organization
o: Example Company
dc: example
dn: cn=Manager,dc=example,dc=com
objectclass: organizationalRole
cn: Manager
|
Затем следует выполнить % ldapadd -x -D "cn=Manager,dc=example,dc=com" -W -f example.ldif, чтобы добавить его.
Очевидно, вам нужно поменять имя домена example.com на ваше. Как правило, структуры и имена доменов LDAP совпадают с обычными DNS именами. Вам понадобится указать значение rootpw, которое вы указали в slapd.conf.
Выполнение запросов в базах данных LDAP
Имеется утилита slurpd (Standalone LDAP Update Replication Daemon), реплицирующая всю информацию базы данных; однако для отдельных данных используется либо программа типа ldapsearch, либо, что более вероятно, поддержка LDAP, встраивается в некоторые приложения, которые запускает пользователь. Утилита slapcat также пригодна для сброса базы данных LDAP в LDIF. Например, многие Mail User Agents (MUAs) могут использовать LDAP для выделения адреса и контактной информации.
Внутри приложений, включая и те, что вы напишете самостоятельно, используя компилируемые или скриптовые языки, к ресурам LDAP можно обращаться при помощи специальных URL для LDAP. Они имеют вид ldap://host:port/dn?attr ibutes?scope?filter?extens ions.
Большая часть этих полей является необязательными. Имя хоста по умочанию -- это localhost; порт, использующийся по умолчанию, 389. Умолчательное значение имени, распознаваемого как root, -- пустая строка. Если требуется информация для идентификации, она указывается в добавочных частях URL.
Вдобавок к LDAP URL, многие серверы и клиенты LDAP также поддерживают нестандартные, но все-же широко используемые LDAPS URL. LDAPS URL используют соединения SSL вместо обычных текстовых соединений, и их портом по умолчанию является 636: ldaps://host:port/dn?attributes?scope?filter?extensions.
|  |