LDAP (англ. Lightweight Directory Access Protocol — «облегчённый протокол доступа к каталогам») — это сетевой протокол для доступа к службе каталогов X.500, разработанный IETF как облегчённый вариант разработанного ITU-T протокола DAP. LDAP — относительно простой протокол, использующий TCP/IP и позволяющий производить операции аутентификации (bind), поиска (search) и сравнения (compare), а также операции добавления, изменения или удаления записей.
Установка
Ставить будем из портов.
# cd /usr/ports/net/openldap24-server/
# make install clean
В опциях установки я выбрал TCP_WRAPPERS
, BDB
, SEQMOD
, SYNCPROV
, SMBPWD
, DYNAMIC_BACKENDS
.
После установки нам сообщится, что конфигурационный файл — /usr/local/etc/openldap/slapd.conf
, и что сервер по умолчанию запускается от пользователя ldap.
Настройка
Добавляем в /etc/rc.conf следующие строчки:
slapd_enable="YES"
slapd_flags='-h "ldapi://%2fvar%2frun%2fopenldap%2fldapi/ ldap://192.168.0.1/ ldap://127.0.0.1"'
slapd_sockets="/var/run/openldap/ldapi"
Далее, открываем и редактируем файл /usr/local/etc/openldap/slapd.conf:
# Подгружаем схемы (это стандартный набор)
include /usr/local/etc/openldap/schema/core.schema
include /usr/local/etc/openldap/schema/cosine.schema
include /usr/local/etc/openldap/schema/inetorgperson.schema
include /usr/local/etc/openldap/schema/misc.schema
include /usr/local/etc/openldap/schema/nis.schema
include /usr/local/etc/openldap/schema/openldap.schema
# А эти берем
#include /usr/local/etc/openldap/schema/samba.schema
#include /usr/local/etc/openldap/schema/dnszone.schema
#include /usr/local/etc/openldap/schema/dhcp.schema
pidfile /var/run/openldap/slapd.pid
argsfile /var/run/openldap/slapd.args
# Подгружаем модуль bdb
modulepath /usr/local/libexec/openldap
moduleload back_bdb
# Всякие политики безопасности
access to attrs=userPassword
by self write
by anonymous auth
by * none
access to *
by self write
by anonymous read
by * none
#######################################################################
# BDB database definitions
#######################################################################
database bdb
suffix "dc=pravo4u,dc=ru"
rootdn "cn=root,dc=pravo4u,dc=ru"
# Создается с помощью slappasswd
rootpw secret
# Данная директория должна существовать ДО запуска slapd.
# Рекомендуется выставить права 700.
directory /var/db/openldap-data
# Поддерживаем следующие индексы
index objectClass eq
index cn eq
Следуем совету, данному в конфиге — выставляем права на директорию /var/db/openldap-data
:
# chmod 700 /var/db/openldap-data
Если сейчас запустить slapd, то в логах (/var/log/debug.log
) будет примерно следующее сообщение:
Aug 6 12:04:28 server slapd[71856]: bdb_db_open: warning - no DB_CONFIG file found in directory /var/db/openldap-data: (2). Expect poor performance for suffix "dc=pravo4u,dc=ru".
Эта ошибка говорит, что у нас не установлены никакие параметры для базы данных bdb. Из-за чего может сильно страдать производительность. Чтобы избавить от этой ошибки, надо скопировать файл DB_CONFIG.example
из папки /usr/local/etc/openldap
в папку /var/db/opeldap-data
(это та папка, которая указана в конфигурационном файле ldap).
# cp /usr/local/etc/openldap/DB_CONFIG.example /var/db/openldap/DB_CONFIG
Все. Теперь можно запускать службу ldap.
Первым делом, что нам надо сделать — это создать базовые группы и саму запись о домене. Делается это путем создания *.ldif файла, который будет загружен в ldap.
Файл main.ldif должен примерно следующий вид:
dn: dc=pravo4u,dc=ru
objectClass: dcObject
objectClass: organization
objectClass: top
dc: pravo4u
o: pravo4u
dn: ou=users,dc=pravo4u,dc=ru
objectClass: top
objectClass: organizationalUnit
ou: users
dn: ou=groups,dc=pravo4u,dc=ru
objectClass: top
objectClass: organizationalUnit
ou: groups
dn: ou=computers,dc=pravo4u,dc=ru
objectClass: top
objectClass: organizationalUnit
ou: computers
И добавляем все это дело в ldap:
# ldapadd -x -D "cn=root,dc=pravo4u,dc=ru" -w password -f main.ldif
-x означает, что мы используем простую авторизацию, вместо SASL
-D dn — используем DN для подключения к ldap
-w пароль — вводим пароль
-f файл — файл, который надо обработать
После этого файл main.ldif можно удалить.
Упрощаем администрирование
Можно, конечно же, добавлять записи точно так же как это было сделано в примере выше, но гораздо проще использовать для этого веб-интерфейс. Тем более, такие есть в наличии… Я предпочитаю GOsa. Ставим из портов:
# cd /usr/ports/sysutils/gosa
# make install clean
К сожалению, не все так просто. Я нажил себе 4 часа мучений, пытаясь сделать так, чтобы gosa заработал. Сначала я даже пытался написать инструкцию. Но потом плюнул на это дело. Скажу лишь, что для GOsa требуется огромное количество различных зависимостей, надо копировать кучу схем для ldap, редактировать файл php.ini и httpd.conf… И этим дело не ограничивается.
Слушай хорошая статья про посленний LDAP 2.4 давно искал , пол ночи перерыл
хочу gosa настроить чтоб самбой ешё рулила это реально ? или тяжело ?
но не в качестве домена , потом ешё самс и сквид прикрутить
Я не советую ставить gosa. Эта софтина тянет просто огромное количество пакетов за собой. Если не так важно что и сколько всего стоит на системе, то можно попробовать поставить. На момент, когда ставил я, были проблемы с установкой, приходилось много править ручками.
Мега огромное Вам спасибо!