Формат файла паролей 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')


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


-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 года всерьез. Спасибо. :)
Брайан Шоуолтер
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.