Impostare HISTIGNORE su “sudo -S”
$ export HISTIGNORE='*sudo -S*'
e poi passare la password in modo sicuro a sudo:
$ echo "your_password" | sudo -S -k <command>
``` ```
$ 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
“HISTIGNORE” significa non salvare questo comando nella cronologia. Questa è la cronologia in memoria o il file “~/.bash_history”.
Ad esempio, la seguente procedura consente di passare la password in modo sicuro al comando sudo, senza conservare la cronologia della password.
“-S”, significa utilizzare stdin per la password,
“-k” significa ignorare le credenziali memorizzate nella cache per costringere sudo a chiedere sempre. Questo è per un comportamento coerente.
$ 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
``` &001
Il lato negativo del metodo di cui sopra è che se volete vedere i comandi che avete eseguito nella cronologia in seguito non ci saranno. Un altro metodo è quello di aggiornare la cache delle credenziali di autenticazione di sudo (il default è abilitato con un timeout di 5 minuti), quindi eseguire il sudo separatamente. Ma il lato negativo di questo è che si dovrà essere consapevoli della cache di 5 minuti.
Per esempio:
&001 &001
Nota Ho eseguito un sudo prima di ogni comando per assicurare che la cache del sudo sia aggiornata, dato che il valore predefinito è di 5 minuti. Sì, whoami non dovrebbe richiedere 5 minuti, ma penso che sia meglio farlo eseguire prima di ogni comando per coerenza. Si potrebbe anche mettere "export HISTIGNORE='_sudo -S_'" nel file ~/.bashrc, poi caricarlo con ". ~/.bashrc" o logoff e poi effettuare il login. Tuttavia, sto pensando di usare questo per scopi di scripting, quindi lo terrò in cima a tutti i miei script per le migliori pratiche di sicurezza. Impostare "echo "" | sudo -S -v" su una variabile invece potrebbe essere una buona idea, poi basta eseguire la variabile prima di ogni comando che necessita di privilegi di root, vedi il commento di Janar. Il commento di "John T" dovrebbe includere anche il parametro "-k", come se si eseguisse "sudo -S" senza "-k" e la cache di autenticazione sudo avesse già le proprie credenziali (ed è ancora valida, la cache di autenticazione sudo di default è di 5 minuti) allora bash eseguirà invece la password come comando, il che è un male.