Когда я установил 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) есть обходной путь:
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
slaptest -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d/
slapd
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