Come fare 'sudo' afferrare la password da un file?


13

Voglio eseguire un comando che richiede la password sudo dire:

sudo apt-get update

Non dovrebbe funzionare (ho memorizzato la password in un normale file di testo passwd.txt):

sudo apt-get update <~/passwd.txt

Questa è la mia logica per il motivo per cui DOVREBBE funzionare: quando è richiesta la password, all'utente viene chiesto di inserire la password dalla tastiera. Ma reindirizzare la stdinlettura dal passwd.txtfile dovrebbe funzionare.

Non dovrebbe?



Userai normalmente lo expectscript tcl per automatizzare tali cose.
Adobe,

Se hai bisogno di chiedere questo, probabilmente stai facendo qualcosa di sbagliato. Potresti condividere ciò che stai cercando di realizzare in primo luogo? Non si dovrebbe mai usare hack come questo. È un'indicazione che dovrebbe esserci una soluzione migliore.
gertvdijk,

@gertvdijk Non sono un esperto di Ubuntu ma sto imparando. Ho dato questo a me stesso come esercizio: "Esegui un comando in uno script Bash che richiede il privilegio sudo usando solo le conoscenze che possiedo attualmente. Senza usare Google." Ho trovato la risposta sopra e ho pensato che dovrebbe funzionare. In seguito ho trovato soluzioni migliori e più sicure su AskUbuntu.
MichaelB,

Risposte:


27

sudonon legge la password stdindi default. Dalla 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.

Quindi dovresti eseguire:

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

Tieni presente che l'archiviazione delle password nei file non è una buona pratica. Dovresti leggere:


Inteso! Risposta breve e dolce!
MichaelB,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.