Формат файла паролей ldapsearch

18

Как я должен передать пароль для ldapsearchиспользования -y <password file>опции?
Если я напишу пароль в файле паролей в виде простого текста, я получу эту ошибку:

ldap_bind: Invalid credentials (49)
    additional info: 80090308: LdapErr: DSID-0C0903AA, comment: AcceptSecurityContext error, data 52e, v1772

То же самое происходит, если я использую эту -w <password>опцию.

РЕДАКТИРОВАТЬ :
команда, которую я бегу

ldapsearch -x -D <my dn> -y .pass.txt -h server.x.x -b "dc=x,dc=y" "cn=*"

Где файл .pass.txtсодержит мой пароль, в виде простого текста. И DN, и пароль верны. Если я запускаю команду с этой -Wопцией и набираю пароль в командной строке, команда запускается успешно, но я бы хотел как-то сохранить пароль для создания сценария.

Паоло Тедеско
источник
Какой тип файла паролей вы используете? Вы можете показать нам полную команду, которую вы вводите. Используете ли вы правильные учетные данные?
solefald

Ответы:

22

Имейте в виду, что ldapsearch будет использовать все содержимое файла для пароля - это означает, что он будет содержать завершающий символ новой строки, если он существует. Чтобы проверить, действительно ли это ваша проблема, попробуйте создать файл без него:

echo -n ThisIsaBadPassword > .pass.txt

( ОБНОВЛЕНИЕ : Включено '-n')

sysadmin1138
источник
1
Я только что попробовал, но я получаю точно такую ​​же ошибку ...
Паоло Тедеско
2
Нет не будет Вам нужно echo -nили printfво избежание новой строки.
user1686
Эхо-н сделал свое дело! Спасибо за вашу помощь.
Паоло Тедеско
В продолжение комментария Гравити, echo -n работает отлично, например: echo -n "secretpassword"> /etc/ldapscripts/ldapscripts.passwd
Нед В.
Досадная проблема решена благодаря этому, спасибо. Я просто использовал sedдля удаления конца существующего файла, хотя.
Wirefox
1

Предполагая, что это перевод строки / каретки, попробуйте следующее:

cat .pass.txt | tr -d '\n\r' > .pass2.txt

Затем используйте файл .pass2.txt. Вы всегда можете проверить наличие новых строк и возврат каретки, cat -vEи они будут отображаться как $ и ^ M соответственно.

Вы также можете сделать это -y <(cat .pass.txt | tr -d '\n\r')непосредственно в команде ldapsearch.

Кайл Брандт
источник
0

ldapsearch -x -D cn=Manager,dc=domain,dc=com -y pass.txt -H ldap://ldap.domain.com -b dc=domain,dc=com

Возможно, вам придется chmod 600 pass.txt

hfranco
источник
-2

Нет необходимости сбрасывать пароль в реальный файл. Просто передайте его с флагом -n, чтобы предотвратить символ новой строки, затем прочитайте его из дескриптора файла STDIN (/ dev / fd / 0) следующим образом:

echo -n 'mypassword' | ldapsearch -x -D <my dn> -y /dev/fd/0 -h server.x.x -b "dc=x,dc=y" "cn=*"
Брайан Шоуолтер
источник
проблема с этим подходом состоит в том, что он оставляет вас в курсе истории оболочки и PS, чтобы узнать ваш пароль.
cgseller
1
Дело принято. Сейчас середина 2018 года. Я учился на своих ошибках. Не принимайте мою болтовню 2014 года всерьез. Спасибо. :)
Брайан Шоуолтер