Jak zmusić sudo do pobrania hasła z pliku?

13

Chcę uruchomić polecenie wymagające hasła sudo:

sudo apt-get update

Czy to nie powinno działać (zapisałem hasło w normalnym pliku tekstowym passwd.txt):

sudo apt-get update <~/passwd.txt

Taka jest moja logika, dlaczego POWINIEN działać: kiedy hasło jest wymagane, użytkownik jest proszony o wprowadzenie hasła z klawiatury. Ale przekierowanie stdindo odczytu z passwd.txtpliku powinno działać.

Nie powinno?

MichaelB
źródło
Zwykle używasz expectskryptu tcl do automatyzacji takich rzeczy.
Adobe,
Jeśli musisz o to zapytać, prawdopodobnie robisz coś złego. Czy mógłbyś w pierwszej kolejności podzielić się tym, co próbujesz osiągnąć? Nigdy nie należy używać takich hacków. To wskazówka, że ​​powinno być lepsze rozwiązanie.
gertvdijk
@gertvdijk Nie jestem ekspertem od ubuntu, ale się uczę. Dałem to sobie jako ćwiczenie: „Wykonaj polecenie w skrypcie Bash, który wymaga uprawnień sudo, korzystając tylko z wiedzy, którą obecnie posiadam. Bez użycia Google”. Wymyśliłem powyższą odpowiedź i pomyślałem, że to powinno zadziałać. Później znalazłem lepsze, bezpieczniejsze rozwiązania na AskUbuntu.
MichaelB

Odpowiedzi:

27

sudostdindomyślnie nie odczytuje hasła . Z sudostrony man:

-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.

Więc powinieneś uruchomić:

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

Pamiętaj, że przechowywanie haseł w plikach nie jest dobrą praktyką. Powinieneś czytać:

Eric Carvalho
źródło
Zrozumiany! Krótka i słodka odpowiedź!
MichaelB