Як змусити "sudo" захопити пароль з файлу?


13

Я хочу запустити команду, яка вимагає пароля sudo сказати:

sudo apt-get update

Хіба це не спрацює (я зберігав пароль у звичайному текстовому файлі passwd.txt):

sudo apt-get update <~/passwd.txt

Це моя логіка, тому чому ПОТРІБНО працювати: коли пароль необхідний, користувачеві пропонується ввести пароль з клавіатури. Але перенаправлення stdinна читання з passwd.txtфайлу повинно працювати.

Чи не повинен?



Ви б noramlly використовувати expectсценарій tcl для автоматизації таких речей.
Adobe

Якщо вам потрібно це запитати, ви, мабуть, робите щось не так. Чи можете ви поділитися тим, що ви намагаєтесь досягти в першу чергу? Ніколи не слід використовувати такі хаки. Це вказівка ​​на те, що має бути краще рішення.
gertvdijk

@gertvdijk Я не фахівець убунту, але я вчуся. Я дав це собі як вправу: "Виконай команду в Bash Script, яка вимагає привілей судо, використовуючи лише ті знання, якими я зараз володію. Без використання Google". Я придумав вищезгадану відповідь, і я подумав, що це повинно працювати. Пізніше я знайшов кращі, безпечніші рішення на AskUbuntu.
MichaelB

Відповіді:


27

sudoне читає пароль stdinза замовчуванням. З sudomanpage:

-S  The -S (stdin) option causes sudo to read the password from the standard input instead of the terminal device.
    The password must be followed by a newline character.

Тому вам слід запустити:

sudo -S apt-get update <~/passwd.txt

Майте на увазі, що зберігання паролів у файлах не є хорошою практикою. Ви повинні прочитати:


Розуміли! Коротка n солодка відповідь!
MichaelB
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.