Vous pouvez supprimer uniquement la ligne incriminée de bash
au lieu d'effacer tout l'historique. Supprimez simplement la ligne avec le -d
flag, puis enregistrez (écrivez) le nouvel historique avec le -w
drapeau :
$ history
351 ssh [email protected]
352 my_password
$ history -d 352
$ history -w
Il y a deux parties :
bash
stocke l'historique dans un fichier~/.bash_history
qui est, par défaut, écrit à la fin de la session- le
history
qui est gardé en mémoire
Pour être sûr, vous devez l'effacer de la session :
history -c
et tronquer le fichier d'historique si nécessaire :
> ~/.bash_history
Si votre session dans laquelle vous avez tapé le mot de passe est toujours ouverte, alors un autre moyen de couvrir votre trace est de définir le HISTFILE
variable au périphérique nul afin que l'historique ne soit pas écrit dans ~/.bash_history
lorsque la session se termine :
export HISTFILE=/dev/null
Étant donné que bash (au moins toutes les versions historiques et actuelles que je connais) n'enregistre pas automatiquement l'historique jusqu'à ce que vous quittiez, une stratégie généralement applicable lorsque vous avez tapé une commande dont vous voulez vous assurer qu'elle ne sera jamais enregistrée consiste à taper immédiatement :
kill -9 $$
Cela tue le shell avec SIGKILL
, qui ne peut pas être intercepté, de sorte que le shell n'a aucun moyen de sauvegarder quoi que ce soit à la sortie.
La plupart des autres approches impliquent un nettoyage après coup (c'est-à-dire après que les données ont déjà atteint le disque), ce qui a beaucoup plus de risques d'erreur (manquer une copie), surtout si le système utilise btrfs ou similaire.