Я не знаю, как текущие пакеты Ubuntu выполняют первоначальную настройку OpenLDAP, но как в 10.04, так и в 12.04 этот процесс не очень хорошо учитывал cn = config. Если установлено, вы должны найти пароль в атрибуте olcRootPW
в /etc/ldap/slapd.d/cn=config/olcDatabase= {0} config.ldif
(вероятно, в кодировке base64 ).
Чтобы изменить пароль, используйте ldapmodify
как root. Сохраните это как файл 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
, который по умолчанию имеет доступ к * 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