ldapsearch показывает записи участников без CN

Я использую ldapsearch на Linux-сервере Debian 9 для запроса MS Active Directory. Я хотел бы запросить / найти всех пользователей в моей группе "mygroupname". Команда

ldapsearch -o ldif-wrap=no -xWLLL -D "myaccount" -h mydomain -b "ou=user,dc=mydc,dc=com" "cn=mygroupname" member

имеет следующий вывод:

dn: CN=mygroupname,OU=user,DC=mydc,DC=com
member: CN=Paula Normal,OU=whatever,OU=...,OU=...,OU=...,DC=mydc,DC=com
member:: Q049QmV0dGluYSBUw7Zs...................9nbmUsT1U9RGV1dHNjwdGEsREM9Y29t
member: CN=Peter Testman,OU=whatever2,OU=...,OU=...,OU=...,DC=mydc,DC=com
...

Я сравнил вывод с AD-GUI. Вторая запись должна быть другим действующим пользователем, но результат неожиданный и нечитаемый. Информация о CN, OU, DC отсутствует. Я обнаружил, что странные записи действительны, но закодированы в base64.

В чем вина? Есть ли коррупция в AD? Моя команда запроса неверна? Почему некоторые записи закодированы в base64. Как получить правильный результат?

1
задан 21 March 2019 в 22:55
2 ответа

Причиной неожиданного выхода является NON-ASCII-чар в cn-именее. Строка, начинающаяся с "member::" указывает на кодированное в base64 значение, которое можно расшифровать (например, echo "$value" | base64 -d -)

Результаты поиска ldapsearch выводятся с использованием расширенной версии LDIF.

Синтаксис LDIF (см. RFC 2849) предположительно должен быть ASCII-чистым.

Быстрый обходной путь для получения читаемого вывода может быть сделан с помощью обертки типа

myldapsearch() { ldapsearch $* | perl -MMIME::Base64 -n -00 -e 's/\n +//g;s/(?<=:: )(\S+)/decode_base64($1)/eg;print'; }  

Seen in this question.

0
ответ дан 4 December 2019 в 03:11

Ваша командная строка

ldapsearch -o ldif-wrap=no -xWLLL -D "myaccount" -h mydomain -b "ou=user,dc=mydc,dc=com" "cn=mygroupname" member

явно ограничивает запрашиваемые при поиске атрибуты до member.

Просто попробуйте добавить имена искомых атрибутов в качестве дополнительных аргументов в командной строке:

ldapsearch -o ldif-wrap=no -xWLLL -D "myaccount" -h mydomain -b "ou=user,dc=mydc,dc=com" "cn=mygroupname" cn ou o member

См. также: ldapsearch(1)

Более того, Вы должны узнать о синтаксисе LDIF (см. RFC 2849), который должен быть ASCII-чистым. Два двойных столбца после имени типа атрибута означают, что значение было закодировано на основе, например, из-за NON-ASCII-чар в имени. Используйте приличный модуль LDIF для декодирования вывода ldapsearch или лучше используйте LDAP-модуль для вашего любимого скриптового языка.

.
0
ответ дан 4 December 2019 в 03:11

Теги

Похожие вопросы