Я не могу заставить эту конфигурацию работать должным образом:
# 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.