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

Почему ldapsearch не работает с анонимным связыванием после обновления OpenLDAP до версии 2.4?

У меня есть установка OpenLDAP v2.3 который я использую последние несколько лет. Ниже приведены строки в slapd.conf для контроля доступа.

access to dn.one="o=abc, c=IN"
        by * read

access to dn.base="o=abc, c=IN"
        by * none

Когда я использую ldapsearch, используя анонимную привязку, я получаю результат.

Например, следующая команда дает результат.

ldapsearch -x -h localhost -b "o=abc,c=IN" 

Теперь я обновил ОС CentOS с 5.5 до 6.3, поэтому версия OpenLDAP OpenLDAP v2.4. Мы не меняли схему.

Но теперь то же самое ldapsearch дает мне result: 32 No such object ошибка.

Но это работает, когда я добавил следующую строку в конфигурацию управления доступом.

access to dn.one="o=abc, c=IN"
        by * read

access to dn.base="o=abc, c=IN"
        by anonymous read
        by * none

В чем может быть причина? Есть ли при этом риск для безопасности?

Я разместил вопрос в списке рассылки OpenLDAP и получил ответ. Спасибо Пьеранджело Масарати.

В OpenLDAP v2.4 для операции поиска требуются привилегии «поиска» по псевдоатрибуту «entry» базы поиска, чего не было в v2.3.

man slapd.access (5):

[...]

Операция поиска требует привилегий search (= s) для псевдоатрибута записи searchBase (ПРИМЕЧАНИЕ: это было введено в OpenLDAP 2.4).

[...]

Так что мне не нужно давать анонимному доступ на чтение для базы. Достаточно только привилегии поиска, как указано ниже.

access to dn.base="o=abc, c=IN"
            by anonymous search
            by * none

Я успешно его протестировал.