Вы работаете на сервере Linux, к примеру, Ubuntu Server, и хотите получить информацию о доменном пользователе. На помощь приходит утилита ldapsearch.
Утилита доступна в пакете ldap-utils. Установка в Debian:
apt install ldap-utils
Тестовый стенд:
- Работаем на сервере Ubuntu, не в домене.
- Имеется домен ilab.local
- Имеется контроллер домена ilab-dc, FQDN: ilab-dc.ilab.local
- Мы знаем пароль доменного пользователя user111
Вывести список пользователей в подразделении ILAB, команда перед выполнением запросит пароль:
ldapsearch -x -h ilab-dc.ilab.local -D "user111@ilab.local" -W -b "ou=ILAB,dc=ilab,dc=local"
Можно поиграться с командой grep (атрибуты -A и -B, after и before) и получить данные только конкретного пользователя:
ldapsearch -x -h ilab-dc.ilab.local -D "user111@ilab.local" -W -b "ou=ILAB,dc=ilab,dc=local" | grep "# user1" -A 40
# или
ldapsearch -x -h ilab-dc.ilab.local -D "user111@ilab.local" -W -b "ou=ILAB,dc=ilab,dc=local" | grep "sAMAccountName: user1" -A 11 -B 40
Мы получаем полный список атрибутов, отфильтровать потом нужное не составит труда.
Больше примеров
Все объекты дерева:
ldapsearch -x -b <search_base> -H <ldap_host> -D <bind_dn> -W "objectclass=*"
Все пользователи:
ldapsearch -x -b <search_base> -H <ldap_host> -D <bind_dn> -W "objectclass=account"
Вывод конкретных атрибутов:
ldapsearch -x -b <search_base> -H <ldap_host> -D <bind_dn> -W "objectclass=account" cn uid homeDirectory
Оператор И:
ldapsearch <previous_options> "(&(<condition_1>)(<condition_2>)...)"
# пример
ldapsearch <previous_options> "(&(objectclass=account)(uid=john))"
Оператор ИЛИ:
ldapsearch <previous_options> "(|(<condition_1>)(<condition_2>)...)"
# пример
ldapsearch <previous_options> "(|(objectclass=account)(objectclass=organizationalRole))"
Оператор НЕ:
ldapsearch <previous_options> "(!(<condition_1>)(<condition_2>)...)"
# пример
ldapsearch <previous_options> "(!(cn=john))"
Подстановочный символ "*":
ldapsearch <previous_options> "(object_type)=*(object_value)"
ldapsearch <previous_options> "(object_type)=(object_value)*"
# пример
ldapsearch <previous_options> "uid=jo*"
Оператор равенства ":=":
ldapsearch <previous_options> "<object_type>:=<object_value>"
# пример
ldapsearch <previous_options> "cn:=john"
Дополнительные фильтры ":":
ldapsearch <previous_options> "<object_type>:<op1>:<op2>:=<object_value>"
# пример
ldapsearch <previous_options> "cn:caseExactMatch:=john"
Ссылки
https://docs.ldap.com/ldap-sdk/docs/tool-usages/ldapsearch.html