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