Impostare HISTIGNORE su " sudo -S "
$ export HISTIGNORE='*sudo -S*'
Quindi passare la password in modo sicuro a sudo:
$ echo "your_password" | sudo -S -k <command>
"HISTIGNORE" significa non salvare questo comando nella cronologia. Questa è la cronologia in memoria o il file "~ / .bash_history".
Ad esempio, di seguito verrà reindirizzato in modo sicuro la password al comando sudo, senza conservare una cronologia della password.
"-S" significa utilizzare stdin per la password,
"-K" significa ignorare le credenziali memorizzate nella cache per forzare sudo a chiedere sempre. Questo è per un comportamento coerente.
$ 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
Il rovescio della medaglia del metodo sopra è che se vuoi vedere i comandi che hai eseguito nella cronologia in seguito non ci saranno. Un altro metodo è aggiornare la cache delle credenziali di autenticazione sudo (l'impostazione predefinita è abilitata con un timeout di 5 minuti), quindi eseguire sudo separatamente. Ma il rovescio della medaglia è che devi essere consapevole della cache di 5 minuti.
Per esempio:
$ 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 Ho eseguito un sudo prima di ogni comando per assicurarmi che la cache sudo fosse aggiornata, poiché il valore predefinito è 5 minuti. Sì, whoami non dovrebbe richiedere 5 minuti, ma immagino che potrebbe anche essere eseguito prima di ogni comando per coerenza. Puoi anche inserire "export HISTIGNORE = ' sudo -S'"nel tuo file ~ / .bashrc, quindi caricalo con". ~ / .bashrc "o disconnessione, quindi effettua il login. Tuttavia, sto pensando di usarlo per scopi di scripting, quindi lo terrò in cima a tutti i miei script per le migliori pratiche di sicurezza. Impostazione" echo "" | sudo -S -v "su una variabile invece potrebbe anche essere una buona idea, quindi esegui la variabile prima di ogni comando che necessita dei privilegi di root, vedi il commento di Janar. Il commento di" John T "dovrebbe includere anche il parametro" -k " , come se esegui "sudo -S" senza "-k" e la cache di autenticazione sudo abbia già le tue credenziali (ed è ancora valida, la cache di autenticazione sudo predefinita è di 5 minuti), bash eseguirà invece la tua password come comando, che è male.
halt
eseguire come root.