Establezca 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 siguiente canalizará de forma segura su contraseña al comando sudo, sin retener un historial de su contraseña.
"-S", significa usar stdin para la contraseña,
"-K" significa ignorar las credenciales almacenadas en caché para obligar 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 desea ver los comandos que ejecutó en el historial más adelante, no estarán allí. Otro método es actualizar el caché de credenciales de autenticación de sudo (el valor predeterminado está habilitado con 5 minutos de tiempo de espera), luego ejecutar el sudo por separado. Pero la desventaja de esto es que deberá tener en cuenta el 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
Tenga en cuenta que ejecuté un sudo antes de cada comando para asegurarme de que el caché de sudo esté actualizado, ya que el valor predeterminado es 5 minutos. Sí, whoami no debería tomar 5 minutos, pero me imagino que podría ejecutarlo antes de cada comando para mantener la coherencia. También podría poner "export HISTIGNORE = ' sudo -S'"en su archivo ~ / .bashrc, luego cárguelo con". ~ / .bashrc "o cierre sesión y luego inicie sesión. Sin embargo, estoy pensando en usar esto para fines de script, así que lo mantendré en la parte superior de todos mis scripts para las mejores prácticas de seguridad. Configuración de" echo "" | sudo -S -v "a una variable en su lugar también podría ser una buena idea, luego simplemente ejecute la variable antes de cada comando que necesite privilegios de root, vea el comentario de Janar. El comentario de" John T "también debe incluir el parámetro" -k " , como si ejecuta "sudo -S" sin "-k" y la caché de autenticación de sudo ya tiene sus credenciales (y todavía es válida, la caché de autenticación de sudo predeterminada es de 5 minutos), entonces bash ejecutará su contraseña como un comando, que es malo.
halt
correr como root.