OpenLDAP cn = config добавляет отдельного пользователя для репликации «olcDatabase = config, cn = config»

243
elysch

Я надеюсь, что я не задаю глупый вопрос. Я новичок в создании собственного сервиса LDAP.

Для моей обычной базы данных mdb легко добавить нескольких администраторов. Поскольку он содержит olcSuffixатрибут, можно добавить новое подразделение, добавить olcAccessправила и все остальное, поэтому репликацию можно настроить на использование выделенного пользователя.

Но я не нашел способа сделать что-то подобное при репликации конфигурации:

olcDatabase=config,cn=config

Я не могу добавить тебя в cn=configдн. Я получаю следующую ошибку:

could not add entry dn="ou=admins,cn=config" (line=825) 

Любые рекомендации?


ОБНОВЛЕНИЕ 20180828

Здесь я добавлю более подробно о том, что я пробовал.

Когда я пытаюсь импортировать, сервер жалуется:

# ldapadd -c -x -H "ldap://localhost" -D "cn=admin,cn=config" -W -f test.ldif Enter LDAP Password: adding new entry "ou=admins_group,dc=config" ldap_add: Server is unwilling to perform (53) additional info: no global superior knowledge  adding new entry "uid=u1,ou=admins_group,dc=config" ldap_add: Server is unwilling to perform (53) additional info: no global superior knowledge 

Содержимое test.ldif:

dn: ou=admins_group,dc=config objectClass: organizationalUnit ou: admins_group  dn: uid=u1,ou=admins_group,dc=config objectClass: account objectClass: posixAccount objectClass: top objectClass: shadowAccount objectClass: securityPrincipal uid: u1 cn: u1 sAMAccountName: u1 objectSid: u1 userPassword:: e1NTSEF9VVN6MVpuRmx5bWVmN2w5Tmp5WmJtb3duKzMwSEtXREc= shadowLastChange: 15969 shadowMin: 0 shadowMax: 99999 shadowWarning: 7 loginShell: /bin/bash uidNumber: 1300 gidNumber: 1300 homeDirectory: /home/admin/u1 

Почти тот же, который я использую для добавления пользователей в базу данных mdb.

0
Существует ли код возврата или причины, сопровождающий ошибку? Hogstrom 5 лет назад 0

1 ответ на вопрос

1
grawity

Эта конкретная ошибка означает, что нет базы данных с соответствующим префиксом для DN ваших записей. Помните, что бэкэнд конфигурации использует cn=config, а не dc=config. (dc будет означать, что это компонент домена DNS, а это не так.)

Но даже если вы правильно выбрали префикс, вы просто получите другую ошибку (нарушение схемы). В конце концов, cn = config не может иметь посторонних записей, это обеспечивается бэкэндом.

Хорошей новостью является то, что учетная запись пользователя не обязательно должна находиться под cn = config, она может быть где угодно в любом базе данных. Ни правила syncrepl, ни правила olcAccess не заботятся о том, какой суффикс DN есть у ваших пользователей, поэтому просто добавьте учетную запись в основную базу данных mdb или повторно используйте существующую.

Например, это моя собственная конфигурация:

dn: olcDatabase = config, cn = config olcAccess: от до dn.sub = "cn = config" dn = "cn = Replica, ou = System, dc = example, dc = org" read by group = "cn = Administrators, ou = Groups, dc = example, dc = org" управлять * без перерыва ... 

Пока пользователь может войти на сервер, вы можете перечислить его в ACL и использовать для репликации. (Действительно, сертификат или SASL логины / Kerberos может генерировать DNs, которые не существуют в каталоге на всех, и тех, кто все еще прекрасно использовать.)

Спасибо за ваш ответ. Потребуется добавить правило `olcAccess`, чтобы разрешить чтение и запись в конфигурации для указанного пользователя. Правильно? elysch 5 лет назад 0
Да. Все остается прежним. (Хотя в отдельном примечании syncrepl всегда основан на извлечении, поэтому пользователю реплики нужны только разрешения на чтение). grawity 5 лет назад 0

Похожие вопросы