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

Де це мій сервер_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 до бази даних config, щоб я міг завершити налаштування дзеркального режиму?

Відповіді:


10

Це саме те, що написано на жерсті. У вашого DN cn=myuser,dc=mydomain,dc=comне вистачає дозволів, щоб змінити cn=configдерево. І коли ви намагаєтеся "вказати конфігураційну базу даних", ви використовуєте зовсім інший DN cn=myuser,cn=config, який, очевидно, або не існує, або ви використовуєте неправильний пароль.

Щоб зробити подібні модифікації, вам потрібно працювати з достатньо привілейованим обліковим записом для зміни різних баз даних. Обліковий запис "адміністратора", тобто один обліковий запис, який завжди має всі привілеї, вказаний в атрибуті, 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 = example, dc = com" ... Я замінив менеджера на myuser з метою безпеки. Я очікував, що це спрацює. Я думаю, що мені потрібно вказати serverID на рівні, вищому, ніж у базах даних, ... в базовій конфігурації slapd, який я б очікував у cn = config.ldif, а не в olcDatabase \ = \ {1 \} hdb.ldif, де можна знайти olcRootDN.
Лін Оуенс

Якщо ви отримуєте "недостатній доступ", ви не використовуєте адміністратора, налаштованого в olcRootDNта olcRootPW. Цей користувач завжди має доступ до всього, за визначенням. Ще раз зауважте, що різні бази даних мають різних користувачів адміністратора. Для cn=configдерева використовуйте вказане під olcDatabase={0}config,cn=config. І ні, olcServerIDатрибути дійсно належать до cn=configDN. Тут я теж є.
daff

Дякую Даффу, це було все. Я не знав про те, що база даних config - це база даних {0}. Там дійсно був користувач адміністратора. Я дав йому пароль, і мої модифікації пройшли без проблем. :)
Лін Оуенс

Мені було б цікаво дізнатися, який Підручник чи Документацію ви б рекомендували швидко ознайомитись з ldap. Тому що мені зрозуміло, що я абсолютно не маю уявлення, що я роблю ..
Ледачий кодер

1
@TheLazyCoder Офіційна документація є вичерпною, але не дуже доступною для новачків. Документи Ubuntu OpenLDAP з часом ставали кращими і можуть бути досить хорошими для новачків. Крім цього, я досить багато навчився з книги Метта Батчера "Освоєння OpenLDAP", виданої Packt. Ви можете почати там, навіть якщо це трохи датоване зараз.
daff

7

Оскільки у мене була досить схожа проблема, я спробував цікаве рішення, але безрезультатно. На відміну від Лінн Оуенс, я не зміг додати пароль адміністратору в olcDatabase={0}config,cn=config. Нарешті мені вдалося змінити свої cn=configкоманди, такі як:

ldapmodify -Y EXTERNAL -H ldapi:/// -f somefile.ldif

Це працює, зокрема "-Y EXTERNAL -H ldapi: ///", тому що cn = admin, dc = ... створений спочатку не має доступу для внесення цих модифікацій нижчого рівня.
naisanza

1
Якщо це не спрацює з першої спроби, пам’ятайте sudo, ваш друг
ratskin
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.