web-dev-qa-db-fra.com

effacer les sorties critiques du terminal

J'ai Ubuntu 18.04 sur mon win10 et je crée généralement mon mot de passe avec cette ligne de code:

echo -n "<some text generated by hand from the site's domains>" | sha256sum |cut -c-20 

Mais aujourd'hui, j'ai accidentellement appuyé sur Enter après la commande echo.

Ubuntu enregistre-t-il ses sorties de terminal dans un fichier? Suis-je en sécurité en utilisant simplement la commande clear?

Recommandez-vous une meilleure solution pour que mon mot de passe soit différent l’un de l’autre et qu’il soit difficile d’en calculer un nouveau en fonction de certains de mes autres mots de passe?

Merci.

La sortie de la commande est généralement pas enregistrée et la fermeture de la fenêtre suffit. Mais la commande elle-même est stockée: dans l'historique du shell.

Pour le supprimer, il vaut mieux d'abord fermer toutes les fenêtres du terminal. Normalement, l'historique est écrit dans le fichier _~/.bash_history_ lorsque le shell se termine et la manipulation directe du fichier ne sera d'aucune aide, car il sera écrasé à la sortie du shell. Il existe différentes manières de configurer history différemment, mais le plus simple consiste à simplement fermer toutes les fenêtres du terminal.

Ouvrez maintenant une nouvelle fenêtre de terminal et tapez

_history
_

ou

_history | grep echo
_

Exemple de sortie:

_...
2007  echo -n "<some text generated by hand from the site's domains>" | sha256sum |cut -c-20 
2008  echo -n "secret" | sha256sum |cut -c-20 
2009  echo -n "secret"
2010  history
_

Vous voyez ici que non seulement la commande "malveillante" est stockée, mais également la "correcte". Vous pouvez le supprimer avec

_history -d 2009
_

où _2009_ est le numéro dans la première colonne. Changer cela en conséquence. Maintenant:

_history
...
2007  echo -n "<some text generated by hand from the site's domains>" | sha256sum |cut -c-20 
2008  echo -n "secret" | sha256sum |cut -c-20 
2009  history
2010  history -d 2009
2011  history
_

Pour l’avenir, vous voudrez peut-être préfixer votre _echo … | sha256sum …_ avec un espace, c.-à-d.

__echo -n "secret" | sha256sum |cut -c-20   # The '_' indicates a leading space
_

De cette façon, la commande complète ne sera pas enregistrée dans l'historique. Le comportement est contrôlé par la variable HISTCONTROL ( man bash ):

HISTCONTROL

Liste de valeurs séparées par des deux-points contrôlant la manière dont les commandes sont enregistrées dans la liste d'historique. Si la liste de valeurs comprend ignorespace, les lignes commençant par un caractère d'espacement ne sont pas enregistrées dans la liste d'historique. Une valeur de ignoredups empêche l'enregistrement des lignes correspondant à l'entrée précédente de l'historique. Une valeur de ignoreboth est un raccourci pour ignorespace et ignoredups.

Vous voudrez peut-être ajouter _export HISTCONTROL='ignoreboth'_ à votre _~/.bashrc_ pour y parvenir.

3
PerlDuck