--- title: Базовая настройка openldap tags: ldap --- Disclaimer: Я ни в коем не считаю ldap шедевром инженерной/архитектурной мысли, просто так исторически сложилось, что поддержка авторизации через него есть практически везде[^fn1] --- Установка / Debian ------------------- # apt-get install slapd Лезет стандартное окошко настройки, которое просит установить пароль админа. Рекомендую его сразу поставить правильным, потому что поменять его - много лишних действий. Дальше начинается чёрная магия. Схема дерева ------------- Будем делать дерево вот по такой простенькой схеме: dc=org `-> dc=company `+-> ou=users | `+-> uid=user1 | `-> uid=user2 `-> ou=groups `+-> cn=group1 `-> cn=group2 Для юзера, образующий[^fn2] элемент - inetOrgPerson, для группы - groupOfUniqueNames. Настройка slapd ---------------- Нужно создать саму базу, корень в ней, основные ou'шки и пользователя admin для дальнейшей работы. openldap после 2.4.27 поставляется с динамическим конфигом. Что бы там не говорили разработчики, править его **намного сложнее**. Перед тем как создавать свою базу, предлагаю сначала удалить типовую, созданную при установке. Как её удалить уже после создания нашей - см ниже. * остановить slapd: `service slapd stop` * перейти в `/etc/ldap/slapd.d/cn=config`, найти там файлик вида `olcDatabase={X}hdb.ldif` * убедиться, что он именно тот, что нужно: `olcSuffix: dc=nodomain` * если он последний по порядку: переместить его куда-нибудь, например в /tmp * если он НЕ последний - см ниже * проверить конфиг через `slaptest`, в случае успеха - запустить `slapd` обратно Сначала нужно определить порядковый номер для новой базы. Смотрим в `/etc/ldap/slapd.d/cn=config/` на предмет файлов ``olcDatabase*``. Находим последнее по порядку значение в {N}, добавляем к нему единицу. $ export RDN="dc=company,dc=org" # поменять на правильный $ export N=2 # номер базы $ export ADMIN="cn=admin,$RDN" # юзер для правки базы $ PASS=$(slappasswd -h '{SSHA}') New password: Re-enter new password: $ $ cat > 01-create-db.ldif < 02-create-rdn.ldif < 03-create-ou.ldif < 04-create-admin.ldif < tmp.ldif < tmp.ldif <