202 votes

J'ai accidentellement tapé le mot de passe dans la ligne de commande bash.

J'ai accidentellement tapé mon mot de passe dans la ligne de commande bash, en confondant l'option Last login: ... ligne pour Wrong password (J'étais pressé). Que dois-je faire pour couvrir ma trace ?

Ce que j'ai fait, c'est éditer .bash_history et en supprimant la ligne incriminée (j'ai dû me reconnecter une fois pour voir le mot de passe apparaître dans le fichier afin de pouvoir le supprimer, et me reconnecter à nouveau pour le voir disparaître de l'historique disponible sous la touche UPARROW).

Y a-t-il un autre endroit où l'historique des commandes pourrait être sauvegardé ? Le système est CentOS 6.5.

202voto

dotancohen Points 10796

Vous pouvez supprimer uniquement la ligne incriminée de bash au lieu d'effacer l'historique complet. Supprimez simplement la ligne avec l'icône -d puis sauvegarder (écrire) le nouvel historique avec le drapeau -w drapeau :

$ history
351 ssh me@site.com
352 my_password
$ history -d 352
$ history -w

122voto

devnull Points 3165

Il y a deux parties à cela :

  • bash stocke l'historique dans un fichier ~/.bash_history qui est, par défaut, écrit à la fin de la session.
  • die history qui est gardé en mémoire

Pour être sûr, vous devez l'effacer de la session :

history -c

et de tronquer le fichier historique si nécessaire :

> ~/.bash_history

Si la session dans laquelle vous avez tapé le mot de passe est toujours ouverte, il existe un autre moyen d'accéder au mot de passe. couvrir votre trace est de définir le HISTFILE vers le périphérique nul afin que l'historique ne soit pas écrit sur ~/.bash_history lorsque la session se termine :

export HISTFILE=/dev/null

23voto

Puisque bash (du moins toutes les versions historiques et actuelles que je connais) ne sauvegarde pas automatiquement l'historique jusqu'à ce que vous quittiez, une stratégie généralement applicable lorsque vous avez tapé une commande que vous voulez vous assurer de ne jamais sauvegarder est de taper immédiatement :

kill -9 $$

Ceci tue le Shell avec SIGKILL qui ne peut pas être attrapé, donc le Shell n'a aucun moyen de sauvegarder quoi que ce soit à la sortie.

La plupart des autres approches impliquent un nettoyage a posteriori (c'est-à-dire après que les données aient atteint le disque), ce qui augmente considérablement les risques d'erreur (copie manquante), surtout si le système utilise btrfs ou un système similaire.

11voto

mtak Points 14830

Après avoir accidentellement tapé quelque chose que vous ne vouliez pas enregistrer dans l'historique, vous pouvez taper : unset HISTFILE

Bash ne saura pas où stocker l'historique lorsque vous vous déconnectez, ce qui aura pour effet de désactiver l'enregistrement de l'historique pour toute la session.

11voto

MonsterA Points 11

Mon astuce préférée pour cela est d'appuyer sur la flèche vers le haut, de revenir en arrière sur la commande, de taper quelque chose (ce n'est pas forcément nécessaire), d'appuyer sur la flèche vers le bas, de taper "ls" et d'appuyer sur la touche Entrée. Ça semble vraiment bizarre, mais ça marche vraiment. J'ai découvert cela lorsque je me suis énervé après avoir édité la mauvaise commande dans mon historique et que j'ai tout gâché en n'appuyant pas sur ctrl-c pour interrompre l'édition. Je suppose que Bash supporte l'histoire révisionniste ;-)

$ passw0rd
$ <up arrow><backspace x8>cd<down arrow>echo hi
$ history|tail -3

On dirait :

$ passw0rd
passw0rd: command not found
$ echo hi
hi
$ history|tail -3
 2445* cd
 2446  echo hi
 2447  history|tail -3
$

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X