Основное предназначение сервера каталогов - хранить информацию. Для доступа к ней используется операция поиска, которую реализует утилита ldapsearch.
Для поиска из командной строки используется утилита ldapsearch, которая имеет следующий синтаксис:
Для поиска из командной строки используется утилита ldapsearch, которая имеет следующий синтаксис:
ldapsearch [ -b base] [ -s scope ] [filter [ attributes ]]где:
- base - верхняя точка поиска в дереве объектов, указывается в командной строке или клиентском конфигурационном файле(обычно /etc/openldap/ldap.conf)
- scope - область поиска и может принимать одно из следующих значений
- base - поиск только объекта указанного в ключе base
- one - поиск в объекте указанном в base и его прямых наследников первого уровня
- sub - поиск любого уровня вложенности, начиная с верхушки определяемой base. Это поведение по умолчанию
- filter - правило отбора записей по критериям. Это наиболее сложная для восприятия часть поиска из-за использования (прямой) польской нотации. Поисковый фильтр строится из группы сравнений, объединенных операторами логического И(&) и ИЛИ(|). Минимальный поисковый фильтр '*' который эквивалентен 'objectClass=*'
- attributes - список атрибутов, которые будут показаны в результате поиска. По умолчанию показываются все пользовательские атрибуты. Для просмотра полного списка атрибутов необходимо использовать '+'
Формирование фильтра
Допустимые операции сравнения зависят от набора правил, прописанных в схеме для атрибута. По умолчанию допустимо только сравнение на равенство '=' с полным значением(с учетом регистра) или символом '*':
&(objectClass=organization)(o=Sample Corporation)
Если для атрибута определено правило EQUALITY семейства caseIgnore*, то в поисковом фильтре можно использовать значение в любом регистре. Поиск по подстроке требует указания для атрибута правила SUBSTR семейства *SubstringsMatch. Тогда становится доступными следующие фильтры:
Для атрибутов с определенным правилом ORDERING дополнительно доступны также операции сравнения больше(>) и меньше (<) и производные >=, <= .
Для поиска по критерию НЕ РАВНО применяется логический оператор НЕ (!) с обычным выражением равенства:
&(objectClass=organization)(o=Sample*) &(objectClass=organization)(o=*Corporation) &(objectClass=organization)(o=*e Corp*)
Для атрибутов с определенным правилом ORDERING дополнительно доступны также операции сравнения больше(>) и меньше (<) и производные >=, <= .
Для поиска по критерию НЕ РАВНО применяется логический оператор НЕ (!) с обычным выражением равенства:
&(objectClass=organization)(!(o=Sample*))
Переопределение правил на лету
Если стандартные правила не позволяют осуществить нужный поиск, можно переопределить их прямо в поисковом запросе:
(cn:caseExactMatch:=Admin)
Но такой вариант поиска будет вестись без использования индекса, будет медленным и создаст большую нагрузку на сервер каталога. Если вам необходимо регулярно осуществлять поиск с переопределенными правилами сравнения, сортировки или разбора подстрок - нужно изменить схему и пересоздать индексы для базы.
Комментариев нет:
Отправить комментарий