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

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

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

olcDatabase={0}config,cn=config

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

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.

1 ответ1

2

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

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

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

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

dn: olcDatabase={0}config,cn=config
olcAccess: {0}to dn.sub="cn=config"
  by dn="cn=Replica,ou=System,dc=example,dc=org" read
  by group="cn=Administrators,ou=Groups,dc=example,dc=org" manage
  by * none break
...

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .