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

Почему LDAP не должен поддерживать поиск с неравенством в shadowExpire?

Когда я пытаюсь найти на своем сервере OpenLDAP 2.4.42 (shadowExpire<=18074), Я не получаю результатов. Однако поиск (shadowExpire=12671) дает несколько результатов.

Моя конечная цель - периодически обновлять карту Postfix для check_recipient_access отклонить почту на просроченные аккаунты.


Глядя на сервер /etc/ldap/schema/nis.schema, Я вижу:

attributetype ( 1.3.6.1.1.1.1.10 NAME 'shadowExpire'
        EQUALITY integerMatch
        SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )

Это согласуется с RFC 2307, раздел 3, который определяет:

( nisSchema.1.10 NAME 'shadowExpire'
  EQUALITY integerMatch
  SYNTAX 'INTEGER' SINGLE-VALUE )

Оба предполагают, что shadowExpire поддерживает только поиск на равенство.

Тем не мение, RFC 2307bis имеет:

( 1.3.6.1.1.1.1.10 NAME 'shadowExpire'
    EQUALITY integerMatch
    ORDERING integerOrderingMatch
    SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
    SINGLE-VALUE )

… у которого есть ORDERING integerOrderingMatch, позволяя поиску неравенства работать.


Могу ли я взломать свой сервер nis.schema включать ORDERING integerOrderingMatch? Базовое представление по-прежнему будет INTEGER, значит, это должно быть безвредно, правда? (Несмотря на предупреждение в Руководство администратора OpenLDAP в котором говорится: «вы не должны изменять какие-либо элементы схемы, определенные в предоставленных файлах.)

Вы правильно проанализировали отсутствующее правило сопоставления порядка.

Однако вам не следует изменять файлы схемы, поставляемые с OpenLDAP, например nis.schema. Но вы можете использовать альтернативный файл схемы rfc2307bis.schema вместо. Некоторые дистрибутивы Linux уже поставляют этот файл.

Обратите внимание, что использование nis.schema и rfc2307bis.schema является взаимоисключающим.