Неверные учетные данные при установке марионетки openldap

У меня возникли проблемы с получением puppet для установки работающего сервера openldap, используя следующее:

У меня есть модуль torian/ldap в моей бродячей папке и следующее в базовом файле марионетки:

class { 'ldap::server::master':
  suffix      => 'dc=example,dc=co,dc=uk',
  rootpw      => 'adminadmin';
}

vagrant up запускает виртуальную машину без каких-либо ошибок, и openldap работает на порту 389. Насколько я понимаю, пользователь root должен по умолчанию:

cn=admin,dc=example,dc=co,dc=uk

но если я попытаюсь подключиться к указанному выше пользователю/паролю удаленно или с помощью:

ldapadd -x -D "cn=admin,dc=example,dc=co,dc=uk" -W

Я получаю ошибку Invalid Credentials. Я также пробовал с тем же паролем, закодированным SHA:

rootpw      => '{SHA}3ZRwlSi7HIPQjzCI1AQ/R0KJH08=';

но не повезло. Может ли кто-нибудь увидеть, что я сделал неправильно?

Обновить

Запуск slapcat -f /usr/share/slapd/slapd.conf показывает эти две записи:

creatorsName: cn=admin,dc=nodomain
userPassword:: e1NTSEF9R2lES2JuRERqYU1rNGROSG5rN1hTa3dteEdOVjBlYmU=

Они явно отличаются от тех, которые были переданы модулю puppet.

Почти готово...

Спасибо emsworth за то, что указал мне правильное направление, оно почти работает. Он копирует файл обновления LDIF и пытается запустить на нем ldapmodify, чтобы изменить корневое DN и пароль, но это, похоже, искажает вещи. До ldapmodify служба slapd запускается нормально, после чего попытка перезапустить slapd завершается неудачно. Файл обновления:

dn: olcDatabase={1}hdb,cn=config
changetype: modify
replace: olcSuffix
olcSuffix: dc=example,dc=com
-
replace: olcRootDN
olcRootDN: cn=admin,dc=example,dc=com
-
replace: olcRootPW
olcRootPW: {SHA}3ZRwlSi7HIPQjzCI1AQ/R0KJH08=
-

и он запускается с помощью следующей команды:

/usr/bin/ldapmodify -Y EXTERNAL -H ldapi:/// -f
  /etc/ldap/slapd.conf/cn=config/olcDatabase={1}hdb-update.ldif

Попытка запустить обновление вручную с правами root с помощью приведенной выше команды приводит к ошибке:

ldap_modify: Other (e.g., implementation specific) error (80)

и в системном журнале:

Jan  6 15:31:15 ubuntu-server-12042-x64-vbox4210 slapd[19166]: ldif_write_entry:
cannot create file for "olcDatabase={1}hdb,cn=config": Permission denied

person Nick Wilson    schedule 20.12.2013    source источник
comment
Какую версию openldap вы используете?   -  person emsworth    schedule 03.01.2014
comment
Он установил openldap-2.4.28   -  person Nick Wilson    schedule 03.01.2014
comment
Знаете ли вы, используете ли вы конфигурацию OLC (динамическую) или устаревшую конфигурацию? Я могу установить пользователя и пароль администратора в: /etc/openldap/slapd.d/cn=config/olcDatabase={0}config.ldif, но я использую динамическую конфигурацию.   -  person emsworth    schedule 03.01.2014
comment
У меня есть файл '/etc/ldap/slapd.conf/cn=config/olcDatabase={1}hdb.ldif', который содержит пользователя/пароль, упомянутые в обновлении (cn=admin,cn=nodomain). Я ожидаю, что смогу изменить их, но на самом деле я хочу, чтобы модуль марионеток установил их правильно.   -  person Nick Wilson    schedule 03.01.2014
comment
Я предполагаю, что вы сталкиваетесь с ограничением модуля марионетки ldap: github.com/ torian/puppet-ldap/pull/18, особенно в отношении динамической конфигурации и конфигурации slapd.conf.   -  person emsworth    schedule 03.01.2014
comment
Существует ли DN в сценарии обновления? Что произойдет, если вы просто используете dn: olcDatabase={1}hdb в этом сценарии обновления?   -  person emsworth    schedule 06.01.2014
comment
Кроме того, вы пытались запустить slapd вручную с включенным выводом отладки? Какую ошибку выдает slapd при запуске?   -  person emsworth    schedule 06.01.2014
comment
Просто с «olcDatabase={1}hdb» я получаю сообщение об ошибке «ldap_modify: сервер не желает выполнять (53) дополнительную информацию: нет глобальных знаний высшего уровня»   -  person Nick Wilson    schedule 06.01.2014
comment
Пробовал «slapd -d 1» (правильно?). Единственное сообщение, похожее на ошибку, это «Ожидается обычный файл, получен /etc/ldap/slapd.conf».   -  person Nick Wilson    schedule 06.01.2014
comment
На второй взгляд сценарий обновления выглядит нормально. Параметры вывода отладки можно найти с помощью 'slapd -d?'. У меня сейчас нет идей, но я обновлю, если придумаю что-то еще.   -  person emsworth    schedule 06.01.2014
comment
Еще одна вещь: я считаю, что такие вещи, как SELinux, могут вызывать странные результаты с openldap, поэтому убедитесь, что он отключен, по крайней мере, для устранения проблемы.   -  person emsworth    schedule 06.01.2014


Ответы (2)


Я полагаю, что вы сталкиваетесь с ограничением модуля puppet (см. комментарии к исходному вопросу). Вы можете попробовать изменить свой экземпляр ldap, чтобы использовать конфигурацию старого стиля, создать отдельную директиву puppet для замены файла olc или даже попробовать исправить модуль (есть патч, который предположительно будет правильно обрабатывать новую конфигурацию на github).

person emsworth    schedule 03.01.2014
comment
Патч так и не заработал, проблемы с путями и т.д., но после проработки проблем все почти уладилось, осталась только одна проблема с ldapmodify. Я обновлю вопрос с этим ... - person Nick Wilson; 06.01.2014

Будет ли это работать, если вы добавите директиву rootdn в определение вашего класса?

class { 'ldap::server::master':
  suffix      => 'dc=example,dc=co,dc=uk',
  rootdn      => 'cn=admin,dc=example,dc=co,dc=uk',
  rootpw      => 'adminadmin',
}

Я не знаю об этом конкретном классе, но я знаю, что OpenLDAP OOTB не обязательно устанавливает корневое DN.

person Andrew Schulman    schedule 03.01.2014