¿Cómo hacer que 'sudo' tome la contraseña de un archivo?

13

Quiero ejecutar un comando que requiere la contraseña de sudo decir:

sudo apt-get update

¿No se supone que esto funciona (he almacenado la contraseña en un archivo de texto normal passwd.txt):

sudo apt-get update <~/passwd.txt

Esta es mi lógica de por qué DEBE funcionar: cuando se requiere la contraseña, se le pide al usuario que ingrese la contraseña desde el teclado. Pero redirigir la stdinlectura del passwd.txtarchivo debería funcionar.

¿No debería?

MichaelB
fuente
Normalmente usaría el expectscript tcl para automatizar tales cosas.
Adobe
Si necesita preguntar esto, probablemente esté haciendo algo mal. ¿Podría compartir lo que está tratando de lograr en primer lugar? Uno nunca debería tener que usar hacks como este. Es una indicación de que debería haber una mejor solución.
gertvdijk
@gertvdijk No soy un experto en ubuntu pero estoy aprendiendo. Me di esto a mí mismo como un ejercicio: "Ejecutar un comando en una secuencia de comandos Bash que requiere privilegio de sudo usando solo el conocimiento que poseo actualmente. Sin usar Google". Se me ocurrió la respuesta anterior y pensé que debería funcionar. Encontré soluciones mejores y más seguras en AskUbuntu más tarde.
MichaelB

Respuestas:

27

sudono lee la contraseña de stdinforma predeterminada. Desde la página de sudomanual:

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

Entonces deberías ejecutar:

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

Tenga en cuenta que almacenar contraseñas en archivos no es una buena práctica. Deberías leer:

Eric Carvalho
fuente
¡Entendido! Corto y dulce respuesta!
MichaelB