Bezdepbonusu7Программирование: статьи и ответы

Вопрос

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

Автор вопроса: Nick WilsonОтветов: 2

У меня возникли проблемы с получением 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
  • Какую версию openldap вы используете? emsworth 03.01.2014
  • Он установил openldap-2.4.28 Nick Wilson 03.01.2014
  • Знаете ли вы, используете ли вы конфигурацию OLC (динамическую) или устаревшую конфигурацию? Я могу установить пользователя и пароль администратора в: /etc/openldap/slapd.d/cn=config/olcDatabase={0}config.ldif, но я использую динамическую конфигурацию. emsworth 03.01.2014
  • У меня есть файл '/etc/ldap/slapd.conf/cn=config/olcDatabase={1}hdb.ldif', который содержит пользователя/пароль, упомянутые в обновлении (cn=admin,cn=nodomain). Я ожидаю, что смогу изменить их, но на самом деле я хочу, чтобы модуль марионеток установил их правильно. Nick Wilson 03.01.2014
  • Я предполагаю, что вы сталкиваетесь с ограничением модуля марионетки ldap: github.com/ torian/puppet-ldap/pull/18, особенно в отношении динамической конфигурации и конфигурации slapd.conf. emsworth 03.01.2014
  • Существует ли DN в сценарии обновления? Что произойдет, если вы просто используете dn: olcDatabase={1}hdb в этом сценарии обновления? emsworth 06.01.2014

ubuntuopenldappuppet

Ответы

Ответ 1 · рейтинг 1 · emsworth

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

Ответ 2 · Andrew Schulman

Будет ли это работать, если вы добавите директиву 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.

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы