Формат файлу пароля 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>варіант.

EDIT :
Команда, яку я виконую, - це

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для того, щоб уникнути нового рядка.
користувач1686

Ехо -н зробив трюк! Дякую всім за допомогу.
Паоло Тедеско

У відповідь на коментар grawity, echo -n прекрасно працює, наприклад: echo -n "secretpassword"> /etc/ldapscripts/ldapscripts.passwd
Ned W.

Дратівлива проблема, вирішена завдяки цьому, дякую. 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.