Автор Тема: Конфигурация cn=config без переконвертации slapd.conf  (Прочитано 34331 раз)

Вереск

  • Новичок
  • *
  • Сообщений: 20
    • Просмотр профиля
Боле-мене разобрался, как сделать конфигурацию через slapd.conf . Но внятной инструкции, как завести своё дерево через cn=config так и не нашёл. Сильно хотеть помощи! Грязный хак с переводом slapd.conf в конфигурацию slap.d оставляю на крайний случай.

Вереск

  • Новичок
  • *
  • Сообщений: 20
    • Просмотр профиля
Вот типичная статья: http://www.myoguz.info/debian/debian-6-0-squeeze-openldap-2-4-cnconfig

Делаем всё так, slapcat показал вот это:

# slapcat
dn: dc=LDAP
objectClass: top
objectClass: dcObject
objectClass: organization
o: LDAP
dc: LDAP
structuralObjectClass: organization
entryUUID: 8e0f7f1a-0191-1031-841b-853ff525ab39
creatorsName: cn=admin,dc=LDAP
createTimestamp: 20120313195039Z
entryCSN: 20120313195039.908800Z#000000#000#000000
modifiersName: cn=admin,dc=LDAP
modifyTimestamp: 20120313195039Z

dn: cn=admin,dc=LDAP
objectClass: simpleSecurityObject
objectClass: organizationalRole
cn: admin
description: LDAP administrator
userPassword:: e1NTSEF9emtIbkpHNDJScFg5dGtYV0J6OFRGZmdPM0RyLy9BbjQ=
structuralObjectClass: organizationalRole
entryUUID: 8e1c43bc-0191-1031-841c-853ff525ab39
creatorsName: cn=admin,dc=LDAP
createTimestamp: 20120313195039Z
entryCSN: 20120313195039.992481Z#000000#000#000000
modifiersName: cn=admin,dc=LDAP
modifyTimestamp: 20120313195039Z

Создал LDIF, чтоб добавить ветки people и groups:

cat base.ldif
    dn: dc=ldap
    objectClass: dcObject
    objectClass: organization
    objectClass: top
    dc: ldap
    o: ldap

    dn: ou=people,dc=ldap
    objectClass: organizationalUnit
    ou: people

    dn: ou=groups,dc=ldap
    objectClass: organizationalUnit
    ou: groups

И получил по губе:

ldapadd -x -D “cn=admin,dc=LDAP” -w password -f base.ldif
ldap_bind: Invalid DN syntax (34)
        additional info: invalid DN

Скажите болезному, ну что я делаю не так? Ясно, что косячу в какой-то фигне..

Кстати, к cn=admin,dc=ldap подключаться получается через jxplorer.

egor

  • Администратор
  • Старожил
  • *****
  • Сообщений: 456
    • Просмотр профиля
Привет! Начнём с того, что cn=config -- штука достаточно сложная, чтобы брать её нахрапом. Немного лирики. Настройку любого приложения в Linux обычно можно произвести двумя путями: простым и сложным. Простой -- воспользоваться какой-нибудь "волшебной" утилитой, которая "всё сделает сама", либо прочитать чей-нибудь "стопроцентно рабочий" howto, скопировать оттуда все конфиги и вуаля! Сложный -- начать с чтения документации, желательно родной, а потом последовательно реализовывать накопленные знания. Если идти по простому пути, то рано или поздно возникнет ситуация, когда, вроде бы, всё правильно, а не работает =) . Тогда, тщетно порыскав в поисковиках и форумах и не найдя решения, придётся идти по пути сложному. Так зачем зря терять драгоценное время? Начинай сразу со сложного пути =).

Вернёмся к нашему cn=config. Для начала неплохо бы посмотреть, как там всё устроено. Возьми свой рабочий сервер с конфигурацией через slapd.conf, и добавь туда сведения о новой базе данных cn=config. Для этого перед самой первой секцией database (или backend) файла slapd.conf нужно прописать:
database config
rootdn "cn=admin,cn=config"
rootpw SOME_PASS_HERE

С генерацией пароля, я думаю, ты справишься, на крайний случай можешь скопировать строку rootpw из настроек своей рабочей БД. К слову, БД cn=config создаётся по умолчанию в любом случае, сведения же эти мы добавляем, чтобы можно было к ней подключиться. После этого перезапускаешь slapd, подключаешься к cn=config из своего любимого браузера (baseDN -- cn=config, логин и пароль -- из настроек) и изучаешь конфигурацию. Тут же можно и что-либо попробовать поменять -- настройки применятся сразу, правда после перезапуска slapd они пропадут, но это же эксперимент =) .  Одним словом, читай документацию и пробуй. Ну а когда почувствуешь себя достаточно окрепшим, вот тебе статья Андрея Коновалова, в которой описано, как создавать cn=config с нуля: http://sysadminblog.ru/ldap/2009/10/26/pravilnaya-incializaciya-openldap-servera-s-dinamicheskoy-konfiguraciey.html
Читай внимательно и постарайся нигде не ошибаться =). Удачи! Егор.
« Последнее редактирование: 14 Март 2012, 07:57:06 от egor »

Вереск

  • Новичок
  • *
  • Сообщений: 20
    • Просмотр профиля
Ну нахрапом- не нахрапом, но LDAP - это лишь мала часть моей жизни :-) Тратить на неё больше, чем на овладевание пассатижами я не имею никакой возможности. Да и пригодится оно мне так же ограниченно в жизни, как пассатижи. Эт так, лирика :-)

Проблемс-то в том, что в Debian идёт уже некоторая настройка LDAP, прямо при установке. Как минимум, можно задать имя DC и пароль админа этого бардака с именем admin. Правда потом это никак использовать.

А за статью пасиба, там я ещё парочку полезностей накопал, на будущее. Буду завтра как раз копать и разбираться.

egor

  • Администратор
  • Старожил
  • *****
  • Сообщений: 456
    • Просмотр профиля
Проблемс-то в том, что в Debian идёт уже некоторая настройка LDAP, прямо при установке. Как минимум, можно задать имя DC и пароль админа этого бардака с именем admin. Правда потом это никак использовать.
Debian - всего лишь Linux, ничего не мешает остановть slapd, переместить/удалить папку slapd.d (скорее всего, она в /etc/openldap/slapd.d) и создать новую с тем же владельцем/группой правами. При пустой папке slapd.d slapd по умолчанию будет брать конфиграцию из файла slapd.conf

Вереск

  • Новичок
  • *
  • Сообщений: 20
    • Просмотр профиля
Ну в принципе-то да, можно и так поступить. Копаю дальше!

egor

  • Администратор
  • Старожил
  • *****
  • Сообщений: 456
    • Просмотр профиля
Если вдруг кому-то это ещё нужно, я наконец (не прошло и года =) ) написал материал о том, как "с нуля" создать кнфигурацию cn=config.

Егор

tioteath

  • Новичок
  • *
  • Сообщений: 2
    • Просмотр профиля
Если вдруг кому-то это ещё нужно, я наконец (не прошло и года =) ) написал материал о том, как "с нуля" создать кнфигурацию cn=config.

Егор
Как по мне, создавать конфигурацию slapd через ldif крайне неудобно. Я, обычно, после установки пакета slapd (на дебиане), меняю olcRootDN на cn=admin,cn=config и добавляю olcRootPW с помощью ldapvi. В последнюю опцию нужен хэш, который получается с помощью тулзы slappasswd. В дебиане этот тул находится в /usr/sbin, хотя рут для того чтобы сгенерировать хэш не нужен, но нужен для ldapvi, т.к. дебиановский конфигуратор добавляет доступ к cn=config через ldapi:// (unix-сокет). Запускать ldapvi надо так: ldapvi -Y EXTERNAL -h ldapi:/// -b cn=config
Дальше ставлю какой-нибудь модный LDAP редактор, типа http://directory.apache.org/studio/.
Можно попробовать phpldapadmin, но с последним можно словить проблемы с доступом в cn=config (как и множество других проблем, всё-таки крайне убогое и глючное падение -- php, как-никак, но альтернатив с веб-интерфейсом ему особо нет).
Для удобства, я ставлю olcRootDN: cn=admin,cn=config вобще всем базам в slapd, проблем с безопаснотью тут нет, т.к. если у кого-то есть пароль от этого пользователя, дать ему доступ ко всем базам серевера -- это дело техники. Единственный нюанс тут -- olcRootPW может быть только один.
Всю дальнейшую настройку можно осществлять по статьям, которых в инете много, в том числе на этом сайте. Единственный нюанс, cn=config надо прописать руками в настройках, т.к. slapd его не отдаёт по умолчанию (что правильно), соответственно его не будет видно в списке.
По поводу конвертации slapd.conf в slapd.d -- никогда этим не занимался, т.к. во-первых тул который это делает (slaptest) крайне редко генерит валидный ldif, а во-вторых, атрибуты для конфигурации через cn=config называются очень похоже на опции из slapd.conf. Т.е. читая статью, где приводится только slapd.conf, можно легко понять какой атрибут соответсвует какой именно опции. В этом, кстати, грфический LDAP-редактор выигрывает у того же ldapvi, т.к. там как-правило есть автодополнение из cn=subschema, а у ldapvi я такого не нашёл.

egor

  • Администратор
  • Старожил
  • *****
  • Сообщений: 456
    • Просмотр профиля
Здравствуйте! Спасибо за хорошее сообщение =) .  Лично мне больше всего понравился ldapvi -- интересная концепция, при наличии знаний по работе с каталогом может существенно (по сравнению с ldif) ускорить правку записей.

Про предустановленную cn=config и SASL EXTERNAL я упомянал в предисловии по Ubuntu, нужно будет дополнить его Вашими соображениями относительно добавления olcRootDN и olcRootPW.

В целом же материал посвящён инициализации с нуля, а не с предустановленной отправной точки, а тут без ldif не обойтись. К тому же он всё-таки больше нацелен на новичков, а потому концепция использования LDIF-файлов весьма полезна для осознания того, что же всё-таки происходит в каталоге. А когда осознание придёт, можно воспользоваться и графическими клиентами (как я отмечал в конце раздела по инициализации cn=config). Как всегда, путей достижения результата в *nix много.

Дальше ставлю какой-нибудь модный LDAP редактор, типа http://directory.apache.org/studio/.
Мне он показался черезчур модным =) -- интерфейс всё-таки путанный, а с поиском так вообще иногда происходят странные вещи -- то, что ldapsearch находит влёт, Studio ищет долго и НЕ находит =( . IMHO, из графических клиентов лучше LdapAdmin пока ничего не написали, но он, к сожалению, только под Windows, а если мне нужно что-то в графическом интерфейсе исправить под Linux, я использую добрый старый LBE.

Егор.

vgo

  • Новичок
  • *
  • Сообщений: 3
    • Просмотр профиля
Если вдруг кому-то это ещё нужно, я наконец (не прошло и года =) ) написал материал о том, как "с нуля" создать кнфигурацию cn=config.

Егор
За статью огромное спасибо. Я - новичок в LDAP и она мне очень помогла.
Меня вполне устраивает начало работы от root, как описано для Ubuntu.
Могу добавлять или изменять атрибуты и с командной строки, и через LDAP Admin.

Но есть одна проблема. Уже создана база dc=my-domain,dc=com. Мне она, разумеется, не нужна.
Не могу понять, как вместо нее сделать то, что мне нужно. Просто правкой атрибутов в olcDatabase={2}bdb.ldif
получается неработоспособная конфигурация, а начинать собирать базу "с нуля" пока не хочется.

vgo

  • Новичок
  • *
  • Сообщений: 3
    • Просмотр профиля
Re: Конфигурация cn=config без переконвертации slapd.conf
« Ответ #10 : 24 Декабрь 2014, 19:08:01 »
В общем, я обошел эту проблему. Но правильный ответ узнать бы хотелось.

egor

  • Администратор
  • Старожил
  • *****
  • Сообщений: 456
    • Просмотр профиля
Re: Конфигурация cn=config без переконвертации slapd.conf
« Ответ #11 : 25 Декабрь 2014, 00:59:57 »
Здравствуйте! Правильного (простого и надёжного) способа решить проблему лишней БД пока нет =( . Можно пойти двумя путями:
В любом случае всё online сделать не получится, придётся останавливать slapd. При первоначальной настройке это не проблема, сложнее когда каталог большой и обслуживает много пользователей. Кроме того, все эти операции несколько рискованные -- можно получить нерабочий сервер. Будьте внимательны и делайте резервные копии!

Егор

vgo

  • Новичок
  • *
  • Сообщений: 3
    • Просмотр профиля
Re: Конфигурация cn=config без переконвертации slapd.conf
« Ответ #12 : 25 Декабрь 2014, 15:36:48 »
Спасибо, я, надеюсь, разберусь потихоньку во всей этой головоломке.
Сейчас же я сделал все-таки через вспомогательный slapd.conf, тем более, что мне надо было привесить дополнительны схемы.

Ну вроде все работает, что должно, дальше будет проще.