Comment faire pour que 'sudo' récupère le mot de passe d'un fichier?

13

Je veux exécuter une commande qui nécessite le mot de passe sudo, dites:

sudo apt-get update

N'est-ce pas censé fonctionner (j'ai stocké le mot de passe dans un fichier texte normal passwd.txt):

sudo apt-get update <~/passwd.txt

C'est ma logique pour pourquoi cela DEVRAIT fonctionner: lorsque le mot de passe est requis, l'utilisateur est invité à saisir le mot de passe à partir du clavier. Mais la redirection de la stdinlecture du passwd.txtfichier devrait fonctionner.

N'est-ce pas?

MichaelB
la source
Vous utiliseriez normalement le expectscript tcl pour automatiser de telles choses.
Adobe
Si vous devez demander ceci, vous faites probablement quelque chose de mal. Pourriez-vous partager ce que vous essayez d'accomplir en premier lieu? On ne devrait jamais avoir à utiliser des hacks comme celui-ci. C'est une indication qu'il devrait y avoir une meilleure solution.
gertvdijk
@gertvdijk Je ne suis pas un expert d'ubuntu mais j'apprends. Je me suis donné ceci comme un exercice: "Exécutez une commande dans un script Bash qui nécessite le privilège sudo en utilisant uniquement les connaissances que je possède actuellement. Sans utiliser Google." J'ai trouvé la réponse ci-dessus et j'ai pensé que cela devrait fonctionner. J'ai trouvé des solutions meilleures et plus sûres sur AskUbuntu plus tard.
MichaelB

Réponses:

27

sudone lit pas le mot de passe stdinpar défaut. Depuis la sudopage de manuel:

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

Vous devez donc exécuter:

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

Gardez à l'esprit que le stockage des mots de passe dans des fichiers n'est pas une bonne pratique. Vous devez lire:

Eric Carvalho
la source
Compris! Réponse courte et douce!
MichaelB