Назад | Перейти на главную страницу

Неизвестный LDAP cn = пароль администратора конфигурации

Когда я установил OpenLDAP, меня попросили создать пароль для пользователя-администратора, но теперь я понимаю, что есть еще один пользователь-администратор для cn=config чей пароль я не знаю. Кто-нибудь знает, как мне перейти к изменению или получению этого пароля администратора? Я нахожусь на свежей установке Ubuntu 13.10.

Мне нужен этот пароль, потому что я пытаюсь настроить sudo-ldap.

Я не знаю, как текущие пакеты Ubuntu выполняют первоначальную настройку OpenLDAP, но как в 10.04, так и в 12.04 этот процесс не очень хорошо учитывал cn = config. Если установлено, вы должны найти пароль в атрибуте olcRootPW в /etc/ldap/slapd.d/cn=config/olcDatabase={0}config.ldif (вероятно, в кодировке base64).

Для изменения пароля используйте ldapmodify как корень. Сохраните это как файл LDIF rootpw_cnconfig.ldif:

dn: olcDatabase={0}config,cn=config
changetype: modify
replace: olcRootPW
olcRootPW: foobar123

Примечание: Чтобы изменить пароль root в CentOS7, используйте dn: olcDatabase={2}hdb,cn=config вместо того dn: olcDatabase={0}config,cn=config.

Очевидно, установите пароль не так, как foobar123. Тогда беги ldapmodify:

$ sudo ldapmodify -Y EXTERNAL -H ldapi:/// -f rootpw_cnconfig.ldif

Это предполагает, что сервер LDAP и cn=config доступ к базе данных можно получить по протоколу ldapi (-H ldapi:///) и эту внешнюю аутентификацию SASL (-Y EXTERNAL) включен и работает, что должно быть по умолчанию в новых настройках OpenLDAP в Debian и Ubuntu. Если вы посмотрите на /etc/ldap/slapd.d/cn=config/olcDatabase={0}config.ldif он должен содержать атрибут olcAccess:

olcAccess: {0}to * by dn.exact=gidNumber=0+uidNumber=0,cn=peercred,cn=external
  ,cn=auth manage by * break

Если вы не знаете, как изменить права доступа для cn=config у которого есть access to * by * none по умолчанию (в некоторых дистрибутивах openldap) есть обходной путь:

  1. создайте соответствующий файл slapd.conf, содержащий:
database config
rootdn "cn=admin,cn=config"
rootpw password
access to * by dn.exact=gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth manage by * break
  1. преобразовать его в LDIF:
slaptest -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d/
  1. бегать slapd
  2. добавлять / изменять базы данных LDAP с использованием авторизации SASL, например:
sudo ldapadd -Y EXTERNAL -Q -H ldapi:/// <<EOF
dn: cn=config
objectClass: olcGlobal
cn: config
olcIdleTimeout: 30
olcLogLevel: stats config sync
olcArgsFile: /run/openldap/slapd.args
olcPidFile: /run/openldap/slapd.pid

dn: cn=schema,cn=config
objectClass: olcSchemaConfig
cn: schema

include: file:///etc/openldap/schema/core.ldif

dn: olcDatabase=frontend,cn=config
objectClass: olcDatabaseConfig
objectClass: olcFrontendConfig
olcDatabase: frontend

dn: olcDatabase=mdb,cn=config
objectClass: olcDatabaseConfig
objectClass: olcMdbConfig
olcDatabase: mdb
olcSuffix: dc=my-domain,dc=com
olcRootDN: cn=Manager,dc=my-domain,dc=com
olcRootPW: secret
olcDbDirectory: /var/lib/openldap/openldap-data
olcDbIndex: objectClass eq
EOF