Ponga HISTIGNORE en “sudo -S”
$ export HISTIGNORE='*sudo -S*'
Luego pase su contraseña de forma segura a sudo:
$ echo "your_password" | sudo -S -k <command>
“HISTIGNORE” significa no guardar este comando en el historial. Ese es el historial en memoria o el archivo “~/.bash_history”.
Por ejemplo, lo que sigue a continuación canalizará de manera segura su contraseña al comando sudo, sin retener el historial de su contraseña.
“-S”, significa usar stdin para la contraseña,
“-k” significa ignorar las credenciales en caché para forzar a sudo a preguntar siempre. Esto es para un comportamiento consistente.
$ export HISTIGNORE='*sudo -S*'
$ echo "<your_password>" | sudo -S -k whoami
$ echo "<your_password>" | sudo -S -k cat /etc/shadow
$ echo "<your_password>" | sudo -S -k bash /tmp/myscript.sh
La desventaja del método anterior es que si quieres ver los comandos que ejecutaste en el historial más tarde no estarán ahí. Otro método es actualizar el caché de credenciales de autenticación de sudo (por defecto está habilitado con 5 minutos de tiempo de espera), y luego ejecutar el sudo por separado. Pero la desventaja de esto es que tendrá que estar atento al caché de 5 minutos.
Por ejemplo:
$ export HISTIGNORE='*sudo -S*'
$ echo "<your_password>" | sudo -S -v
$ sudo whoami
$ echo "<your_password>" | sudo -S -v
$ sudo cat /etc/shadow
$ echo "<your_password>" | sudo -S -v
$ sudo /tmp/myscript.sh
Nota He ejecutado un sudo antes de cada comando para asegurarme de que el caché de sudo está actualizado, ya que el valor por defecto es de 5 minutos. Sí, el whoami no debería tardar 5 minutos, pero me imagino que también podría ejecutarlo antes de cada comando para mayor consistencia. También podrías poner “exportar HISTIGNORE=‘sudo -S’” en tu archivo ~/.bashrc, y luego cargarlo con “. ~/.bashrc” o cerrar sesión y luego iniciar sesión. Sin embargo, estoy pensando en usar esto para propósitos de scripts, así que lo mantendré en la parte superior de todos mis scripts para las mejores prácticas de seguridad. Establecer “echo ”“ | sudo -S -v” a una variable en su lugar también podría ser una buena idea, entonces sólo ejecuta la variable antes de cada comando que necesite privilegios de root, ver el comentario de Janar. El comentario de “John T” también debería incluir el parámetro “-k”, ya que si ejecutas “sudo -S” sin “-k” y el caché de autenticación de sudo ya tiene tus credenciales (y sigue siendo válido, el caché de autenticación de sudo por defecto es de 5 minutos) entonces bash ejecutará tu contraseña como un comando en su lugar, lo cual es malo.