Автор Тема: Помогите написать фильтр  (Прочитано 8176 раз)

marawu

  • Пользователь
  • **
  • Сообщений: 76
  • !
    • Просмотр профиля
Помогите написать фильтр
« : 23 Октябрь 2017, 08:12:18 »
Добрый день, не могу понять как написать фильтр, который будет искать пользователей, которые не состоят ни в каких группах заданных по маске. Пробовал так:


ldapsearch -o ldif-wrap=no -LLL -xZZWD "uid=user.name,ou=People,dc=example,dc=com" -b ou=People,dc=example,dc=com '(!(memberof=cn=*.dept,ou=Groups,dc=example,dc=com))'


Но я так понял memberof не понимает маски. Думал сделать небольшой скрипт на bash, но не могу придумать логику :( Единственное, что смог придумать это так:


Получаем список групп
Получаем список пользователей
Через цикл прогоняем пользователя по каждой группе
Если нет ни в одной, то вывести его имя


Но возможно есть способ проще?

egor

  • Администратор
  • Старожил
  • *****
  • Сообщений: 486
    • Просмотр профиля
Re: Помогите написать фильтр
« Ответ #1 : 24 Октябрь 2017, 02:16:11 »
Здравствуйте!

Добрый день, не могу понять как написать фильтр, который будет искать пользователей, которые не состоят ни в каких группах заданных по маске.
Интересно, где такое может понадобиться?

ldapsearch -o ldif-wrap=no -LLL -xZZWD "uid=user.name,ou=People,dc=example,dc=com" -b ou=People,dc=example,dc=com '(!(memberof=cn=*.dept,ou=Groups,dc=example,dc=com))'

Но я так понял memberof не понимает маски.
У memberOf синтаксис DN, атрибуты с таким синтаксисом поддерживают только правило соответствия EQUALITY, то есть полное совпадение. Совпадение по шаблону (SUBSTR) для них не предусмотрено.

Думал сделать небольшой скрипт на bash, но не могу придумать логику :( Единственное, что смог придумать это так:


Получаем список групп
Получаем список пользователей
Через цикл прогоняем пользователя по каждой группе
Если нет ни в одной, то вывести его имя


Но возможно есть способ проще?

Нормальная логика, нагрузка на каталог минимальна (1 или 2 запроса), но скрипт будет довольно сложный (на bash). Если он будет выполнятся не часто, то можно побольше нагрузить каталог:
1. Получить DN пользователей, организовать по ним цикл.
2. Для текущего пользователя сделать запрос:
ldapsearch -o ldif-wrap=no -LLL -xZZWD "uid=user.name,ou=People,dc=example,dc=com" -b ou=Groups,dc=example,dc=com '(&(cn=*.dept)(member=uid=current.user,ou=People,dc=example,dc=com))' dn

3. Если групп на найдено, запоминаем пользователя, если найдены -- пропускаем.

Егор

marawu

  • Пользователь
  • **
  • Сообщений: 76
  • !
    • Просмотр профиля
Re: Помогите написать фильтр
« Ответ #2 : 24 Октябрь 2017, 07:51:15 »
Интересно, где такое может понадобиться?

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

 

Эта страница

Содержание

Новости:
Форум проекта Pro-LDAP.ru
OpenLDAP 2.4 Руководство

Содержание

Введение в службы каталогов OpenLDAPБыстрое развёртывание и начало работыОбщая картина - варианты конфигурацииСборка и установка OpenLDAPНастройка slapd

 

Конфигурационный файл slapdЗапуск slapdКонтроль доступаОграниченияИнструментыМеханизмы манипуляции даннымиНаложенияСпецификация схемы

 

БезопасностьSASLTLSРаспределённая служба каталоговРепликацияОбслуживаниеМониторингПроизводительностьУстранение неполадок
Перевод официального руководства OpenLDAP 2.4 Admin Guide
Полное содержание здесь
LDAP для учёных-ракетчиков

Содержание

О книгеКонцепции LDAPОбъекты LDAPУстановка LDAPПримерыНастройкаРепликация и отсылкиLDIF и DSMLПротоколLDAP API

 

HOWTOНеполадкиПроизводительностьИнструменты LDAPБезопасностьЗаметкиРесурсы LDAPRFC и X.500ГлоссарийОбъекты
Перевод "LDAP for Rocket Scientists"
Полное содержание здесь
Ресурсы

Книги

Руководство OpenLDAP 2.4LDAP для учёных-ракетчиков

Другие

СтатьиТермины LDAPman-страницы OpenLDAP 2.4Список RFCКлиенты LDAPФайлы наборов схемы
Полезные ресурсы
Форум

 

Разделы форумаНепрочитанные сообщенияПоследние сообщения
Форум проекта
Главная

Pro-LDAP.ru

О проектеНовости проектаУчастникиСтаньте участником!Сообщите об ошибке!Об авторских правахСоглашения проекта
Присоединяйсь!