ldap_modify: недостаточный доступ (50)

9

Я использую сервер OpenLDAP 2.4, который использует службу SSL для связи. Это работает для поиска.

Я пытаюсь добавить зеркальный режим репликации.

Так что это команда, которую я выполняю:

ldapmodify -D "cn=myuser,dc=mydomain,dc=com" -H ldaps://myloadbalancer -W -f /etc/ldap/ldif/server_id.ldif

Где это мой server_id.ldif:

dn: cn=config
changetype: modify
replace: olcServerID
olcServerID: 1 myserver1
olcServerID: 2 myserver2

и это мой cn \ = config.ldif в дереве текстовых файлов slapd.d:

dn: cn=config
objectClass: olcGlobal
cn: config
olcArgsFile: /var/run/slapd/slapd.args
olcPidFile: /var/run/slapd/slapd.pid
olcToolThreads: 1
structuralObjectClass: olcGlobal
entryUUID: ff9689de-c61d-1031-880b-c3eb45d66183
creatorsName: cn=config
createTimestamp: 20121118224947Z
olcLogLevel: stats
olcTLSCertificateFile: /etc/ldap/certs/ldapscert.pem
olcTLSCertificateKeyFile: /etc/ldap/certs/ldapskey.pem
olcTLSCACertificateFile: /etc/ldap/certs/ldapscert.pem
olcTLSVerifyClient: never
entryCSN: 20121119022009.770692Z#000000#000#000000
modifiersName: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
modifyTimestamp: 20121119022009Z

Но, к сожалению, я получаю это:

Enter LDAP Password: 
modifying entry "cn=config"
ldap_modify: Insufficient access (50)

Если я пытаюсь указать базу данных конфигурации, я получаю это:

ldapmodify -H 'ldaps://myloadbalancer/cn=config' -D "cn=myuser,cn=config" -W -f ./server_id.ldif 
Enter LDAP Password: 
ldap_bind: Invalid credentials (49)}

Кто-нибудь знает, как я могу добавить serverID в базу данных конфигурации, чтобы я мог завершить настройку режима зеркала?

Линн Оуэнс
источник

Ответы:

10

Это именно то, что написано на банке. У вашего DN cn=myuser,dc=mydomain,dc=comнедостаточно прав для изменения cn=configдерева. И когда вы пытаетесь «указать базу данных конфигурации», вы используете совершенно другое DN cn=myuser,cn=config, которое, очевидно, либо не существует, либо вы используете неправильный пароль.

Для выполнения подобных изменений вам необходимо работать с учетной записью, обладающей достаточными правами для изменения различных баз данных. Учетная запись «admin», то есть та учетная запись, которая всегда имеет все привилегии, указывается в атрибуте, olcRootDNа ее пароль находится в olcRootPW. Для cn=configбазы данных эти атрибуты находятся в olcDatabase={0}config,cn=configи для «обычной» базы данных, обычно типа HDB, в olcDatabase={1}hdb,cn=config.

Какой учебник или документацию вы использовали? Не похоже, что вы полностью понимаете, что вы здесь делаете.

Дафф
источник
Хм, я уже использую учетную запись olcRootDN. -D "cn = myuser, dc = mydomain, dc = com" - это моя замена "cn = Manager, dc = пример, dc = com" ... Я заменил Manager на myuser в целях безопасности. Я ожидал, что это сработает. Я думаю, что мне нужно указать serverID на уровне выше, чем базы данных, ... в базовой конфигурации самого slapd, который, как я ожидаю, будет в cn = config.ldif, а не в olcDatabase \ = \ {1 \} hdb.ldif, где можно найти olcRootDN.
Линн Оуэнс
Если вы получаете «недостаточный доступ», вы не используете пользователя с правами администратора, настроенного в olcRootDNи olcRootPW. Этот пользователь всегда имеет доступ ко всему по определению. Опять же, имейте в виду, что разные базы данных имеют разных администраторов. Для cn=configдерева используйте тот, который указан в olcDatabase={0}config,cn=config. И нет, то olcServerIDатрибуты делают принадлежат в cn=configDN. Это там, где я их тоже.
Дафф
Спасибо, Дафф, вот и все. Я не знал, что база данных config была базой данных {0}. Там действительно был пользователь-администратор. Я дал ему пароль, и мои модификации прошли без проблем. :)
Линн Оуэнс
Мне было бы интересно узнать, какой учебник или документацию вы бы порекомендовали, чтобы быстро ознакомиться с ldap. Потому что мне ясно, что я понятия не имею, что я делаю ..
Ленивый Кодер
1
@TheLazyCoder Официальная документация является полной, но не очень доступной для новичков. Документы Ubuntu OpenLDAP со временем стали лучше и могут быть достаточно хороши для новичка. Кроме этого, я многому научился из книги Мэтта Батчера «Освоение OpenLDAP», изданной Packt. Вы можете начать там, даже если это немного устарело.
Дафф
7

Поскольку у меня была довольно похожая проблема, я попытался найти интересное решение, но безрезультатно. В отличие от Линн Оуэнс, мне не удалось добавить пароль для администратора в olcDatabase={0}config,cn=config. Мне наконец-то удалось изменить мои cn=configкоманды, например:

ldapmodify -Y EXTERNAL -H ldapi:/// -f somefile.ldif
phep
источник
Это работает, в частности, "-Y EXTERNAL -H ldapi: ///", потому что созданное изначально cn = admin, dc = ... не имеет доступа для внесения этих изменений более низкого уровня.
naisanza
1
Если это не сработает с первой попытки, помните sudo, ваш друг
ratskin