Назад | Перейти на главную страницу

Как правильно настроить подчинение openldap?

Я не могу заставить эту конфигурацию работать должным образом:

# Database LDAP for ldap1
database        ldap
suffix          "ou=ldap1,dc=local"
uri ldap://ldap1
idassert-bind bindmethod=simple
   binddn="cn=admin,dc=ext1"
   credentials="secret3"
   mode=none
   flags=non-prescriptive
idassert-authzFrom "dn.exact:cn=manager,dc=local"
overlay rwm
rwm-suffixmassage   "ou=ldap1,dc=local" "dc=ext1"
subordinate

# Database LDAP for ldap2
database        ldap
suffix          "ou=ldap2,dc=local"
uri  ldap://ldap2
idassert-bind bindmethod=simple
  binddn="cn=admin,dc=ext2"
  credentials="secret2"
  mode=none
  flags=non-prescriptive
idassert-authzFrom "dn.exact:cn=manager,dc=local"
overlay rwm
rwm-suffixmassage   "ou=ldap2,dc=local" "dc=ext2"
subordinate

# Database LDAP for local Manager authentication
database ldap
readonly                yes
suffix "dc=local"
rootdn "cn=manager,dc=local"
rootpw secret1

Зная, что в ldap2 есть запись для "cn = test", я хочу только, чтобы запросы к главному серверу LDAP (с базой: "dc = local) работали, поэтому в основном я хочу, чтобы это работало:

 ldapsearch -x -b "dc=local" -D "cn=manager,dc=local" cn=test -H ldap://localhost -w secret1

Фактически этот запрос остановится ...

Конечно, запрос подчиненного с базой «ou = ldap2, dc = local» работает безупречно и возвращает правильную запись. Этот запрос работает:

 ldapsearch -x -b "ou=ldap2,dc=local" -D "cn=manager,dc=local" cn=test -H ldap://localhost -w secret1

В чем моя ошибка? Я хотел бы склеить оба сервера для эффективного поиска между серверами ldap1 и ldap2 с помощью одного запроса на главном сервере.

Чего не хватало для работы поиска поддерева dc=local base - это фактический корневой объект в базе данных для dc=local.

Поэтому мне пришлось переключиться на mdb для основной базы данных по достаточности dc=local иметь фиктивную базу данных, в которую я мог бы добавлять новые объекты.

Мне также пришлось удалить readonly yes заявление конечно.

И тогда я приготовил это base.ldif файл и добавил его в базовую базу:

cat <'EOF' > /tmp/base.ldif
dn: dc=local
objectClass: top
objectClass: dcObject
objectClass: organization
o: Local
dc: local
EOF
ldapadd -h ldap://MYMASTERHOST -D cn=manager,dc=local -w secret1 -f /tmp/base.ldif

Тогда оба ldapsearch на базе dc=local и на поддереве ou=ldap2,dc=local где работает как положено.

Я не забыл положить обратно readonly yes заявление, так как мне не нужно ничего хранить в базе данных master.