echo $password | sudo -S apt-get install -y foo bar
Esto es un poco peligroso. Si el usuario ya está autenticado para sudo, sudo no volverá a solicitar la contraseña y se enviará a apt-get, lo que podría generar resultados extraños (por ejemplo, si el script postinstall hace una pregunta). Sugeriría utilizar
sudo -k # remove previous sudo timestamp
echo $password | sudo -v -S # create a new one for 15 minutes
sudo apt-get ... # execute the command
en su lugar.
EDITAR: Dirk tiene razón acerca de la contraseña siendo visible durante un tiempo muy corto mientras se ejecuta echo
. Por favor vea mi respuesta como un comentario extendido en lugar de una respuesta a su pregunta.
Puede haber una ventana muy corta mientras existe la entrada/proc para el comando echo, pero 'corto' es el término operativo, me parece (como en milisegundos o menos). –
Do 'strace -o bash.strace -f bash -c 'contraseña de eco | cat'' y examina el archivo 'bash.strace'. Verá la línea con 'execve ("/bin/cat ", [" cat "], [/ * 53 vars * /]) = 0', pero no verá el eco allí (excepto en la primera línea donde se pasa a bash): es un bash incorporado. Por lo tanto, lanzar el script en bash es suficiente para mantenerlo a salvo. – ZyX
@ZyX - gracias por la explicación del riesgo. No habría considerado este tipo de solución anteriormente, sin embargo, mi situación me obliga a usarla. Me alegro de que no sea tan inseguro como temía. – MountainX