Réglez HISTIGNORE sur “sudo -S”
$ export HISTIGNORE='*sudo -S*'
Puis passez votre mot de passe en toute sécurité à sudo :
$ echo "your_password" | sudo -S -k <command>
“HISTIGNORE” signifie de ne pas enregistrer cette commande dans l'historique. C'est l'historique en mémoire ou le fichier “~/.bash_history”.
Par exemple, ce qui suit va transmettre votre mot de passe en toute sécurité à la commande sudo, sans conserver l'historique de votre mot de passe.
“-S”, signifie utiliser stdin pour le mot de passe,
“-k” signifie ignorer les identifiants mis en cache pour forcer sudo à toujours demander. L'inconvénient de la méthode ci-dessus est que si vous voulez voir les commandes que vous avez exécutées dans l'historique plus tard, elles n'y seront pas. Une autre méthode consiste à mettre à jour le cache d'authentification sudo (par défaut, il est activé avec un délai d'attente de 5 minutes), puis à exécuter le sudo séparément. Mais l'inconvénient de cette méthode est que vous devez être conscient de la durée de 5 minutes du cache. Par exemple :
$ 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
Note J'ai lancé un sudo avant chaque commande pour m'assurer que le cache sudo est mis à jour, car la valeur par défaut est de 5 minutes. Oui, whoami ne devrait pas prendre 5 minutes, mais je pense qu'il est préférable de le lancer avant chaque commande pour des raisons de cohérence. Vous pouvez aussi mettre “export HISTIGNORE=‘sudo -S’” dans votre fichier ~/.bashrc, puis le charger avec “. ~/.bashrc” ou vous déconnecter puis vous connecter. Cependant, je pense l'utiliser à des fins de scripting, donc je vais le garder en tête de tous mes scripts pour les meilleures pratiques de sécurité. Définir “echo ” | sudo -S -v" comme une variable pourrait également être une bonne idée, puis lancer la variable avant chaque commande nécessitant les privilèges de root, voir le commentaire de Janar. Le commentaire de “John T” devrait également inclure le paramètre “-k”, car si vous lancez “sudo -S” sans “-k” et que le cache d'authentification sudo a déjà vos informations d'identification (et est toujours valide, le cache d'authentification sudo par défaut est de 5 minutes), alors bash lancera votre mot de passe en tant que commande à la place, ce qui est mauvais.