Когда я пытаюсь найти на своем сервере 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
является взаимоисключающим.