Как заставить 'sudo' захватить пароль из файла?


13

Я хочу запустить команду, которая требует пароль sudo, скажем:

sudo apt-get update

Разве это не должно работать (я сохранил пароль в обычном текстовом файле passwd.txt):

sudo apt-get update <~/passwd.txt

Это моя логика, объясняющая, почему он ДОЛЖЕН работать: когда требуется пароль, пользователя просят ввести пароль с клавиатуры. Но перенаправление stdinчтения из passwd.txtфайла должно работать.

Не так ли?



Вы должны использовать expectскрипт tcl для автоматизации таких вещей.
Adobe

Если вам нужно спросить об этом, вы, вероятно, делаете что-то не так. Не могли бы вы поделиться тем, что вы пытаетесь достичь в первую очередь? Никогда не нужно использовать такие хаки. Это признак того, что должно быть лучшее решение.
gertvdijk

@gertvdijk Я не эксперт Ubuntu, но я учусь. Я дал это себе в качестве упражнения: «Выполните команду в Bash Script, которая требует привилегии sudo, используя только те знания, которыми я в данный момент обладаю. Без использования 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

Имейте в виду, что хранение паролей в файлах не является хорошей практикой. Вы должны прочитать:


Понял! Короткий и сладкий ответ!
MichaelB
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.