Ich habe versehentlich mein Passwort in die Bash-Befehlszeile eingegeben und die Last login: ...
Zeile für falsch gehalten Wrong password
(ich hatte es eilig). Was mache ich, um meine Spur abzudecken?
Ich .bash_history
habe die betreffende Zeile bearbeitet und gelöscht (musste mich einmal neu anmelden, damit das Kennwort in der Datei angezeigt wurde, damit ich es löschen konnte, und erneut anmelden, damit es aus dem unter UPARROW-Taste verfügbaren Verlauf verschwindet).
Gibt es einen anderen Ort, an dem der Befehlsverlauf gespeichert werden könnte? Das System ist CentOS 6.5.
linux
command-line
bash
centos
MaDa
quelle
quelle
/dev/null
.ssh-keygen -f id_rsa -p
.Antworten:
Sie können nur die fehlerhafte Zeile aus dem Verlauf entfernen
bash
, anstatt den gesamten Verlauf zu löschen. Entfernen Sie einfach die Zeile mit dem-d
Flag und speichern Sie den neuen Verlauf mit dem-w
Flag:quelle
Dazu gibt es zwei Teile:
bash
Speichert den Verlauf in einer Datei, in~/.bash_history
die standardmäßig am Ende der Sitzung geschrieben wirdhistory
, was in Erinnerung bleibtUm sicher zu gehen, müssen Sie es aus der Sitzung löschen:
und kürzen Sie die Verlaufsdatei nach Bedarf:
Wenn Ihre Sitzung , in dem Sie das Passwort eingegeben haben noch geöffnet ist, dann eine andere Art und Weise zu Ihrer Spur zu decken ist , die festlegen
HISTFILE
Variable auf die Null - Gerät so , dass die Geschichte nicht geschrieben werden würde ,~/.bash_history
wenn die Sitzung verlässt:quelle
shred
die Datei nicht mehrmals überschreiben oder auf andere Weise?HISTFILE=
ist genug. Vonbash(1)
: Wenn nicht festgelegt, wird der Befehlsverlauf beim Beenden einer Shell nicht gespeichert.Da bash (zumindest alle mir bekannten früheren und aktuellen Versionen) den Verlauf nicht automatisch speichert, bis Sie das Programm beenden, sollten Sie nach Eingabe eines Befehls, der niemals gespeichert werden soll, sofort Folgendes eingeben:
Dies tötet die Shell mit
SIGKILL
, die nicht abgefangen werden kann, so dass die Shell beim Beenden keine Möglichkeit hat, etwas zu speichern.Bei den meisten anderen Ansätzen wird nachträglich gescrubbt (dh nachdem die Daten bereits auf der Festplatte abgelegt wurden), was die Wahrscheinlichkeit von Fehlern (Fehlen einer Kopie) erheblich erhöht, insbesondere wenn das System möglicherweise btrfs oder ähnliches verwendet.
quelle
rm ~/.bash_history~
, um die Sicherungsdatei im OP-Fall zu entfernen, wenn sie bereits gespeichert wurdeNachdem Sie versehentlich etwas eingegeben haben, das nicht im Verlauf gespeichert werden soll, können Sie Folgendes eingeben:
unset HISTFILE
Bash weiß nicht, wo der Verlauf gespeichert werden soll, wenn Sie sich abmelden. Auf diese Weise wird die Verlaufsprotokollierung für die gesamte Sitzung deaktiviert.
quelle
Mein Lieblingstrick dabei ist, den Aufwärtspfeil zu drücken, die Rücktaste über dem Befehl zu drücken, etwas einzugeben (möglicherweise nicht erforderlich), den Abwärtspfeil zu drücken, "ls" einzugeben und die Eingabetaste zu drücken. Fühlt sich wirklich hokey an, aber es funktioniert tatsächlich. Das habe ich herausgefunden, als ich mich darüber geärgert habe, dass ich den falschen Befehl in meinem Verlauf bearbeitet und ihn dann ruiniert habe, indem ich nicht die Tastenkombination Strg-C gedrückt habe, um die Bearbeitung abzubrechen. Ich denke, Bash unterstützt die revisionistische Geschichte. ;-)
Sieht aus wie:
quelle
Zusätzlich zu den anderen Antworten kann es relevant sein, dass das Kennwort jetzt auch im Bildlaufpuffer des Terminals - der Historie des angezeigten Texts - und, was eher ein Problem ist, möglicherweise auf der Festplatte gefunden wird, wenn der Terminalemulator das gespeichert hat Geschichte auf die Festplatte. Dies geschieht in KDE-Konsolen, wenn die Verlaufsgröße auf "unbegrenztes Zurückscrollen" eingestellt ist, um keine Ausgabe zu verwerfen.
quelle
Mit
$<space> command
wird ein Befehl nicht zum Verlauf hinzugefügt, was manchmal nützlich istquelle
ps
.Eine weitere Alternative, um das Speichern in der Verlaufsdatei zu vermeiden (bevor Sie sich abmelden), ist einfach zu
und dann abmelden. Beenden Sie das Schreiben des Verlaufs in eine Datei (da die Datei schreibgeschützt ist), damit die gesamte Bash-Sitzung verworfen und der vorherige Verlauf beibehalten wird.
Melden Sie sich erneut an und setzen Sie die Berechtigungen auf zurück
600
(oder nicht, je nachdem, wie paranoid Sie sind!).quelle
Ich sehe immer wieder erwähnt
Der erste Teil ist definitiv wahr, aber Sie müssen nicht manuell .bash_history bearbeiten, um es zu beheben. Wenn Sie die beiden Befehle in einer Zeile kombinieren, funktioniert dies einwandfrei:
quelle
Viele der Antworten hier versuchen, den fraglichen Befehl aus dem Verlauf der aktuellen Bash-Sitzung zu entfernen, bevor er in
$HISTFILE
(standardmäßig ~ / .bash_history) geschrieben wird. Wenn SiePROMPT_COMMAND=history -a
den Befehl jedoch mit Ihrem Kennwort festgelegt haben, wird er sofort an Ihre$HISTFILE
Adresse gesendet, wenn die Eingabeaufforderung nach Beendigung des Befehls angezeigt wird. Sie müssen Ihre bearbeiten$HISTFILE
, um es zu entfernen.Diese Einstellung wird häufig zum Verschachteln von Befehlen aus mehreren offenen Bash-Sitzungen verwendet .
quelle
Sie sollten auch die Syslog-Protokolle überprüfen. Ungültige Anmeldungen werden im Allgemeinen bei syslog protokolliert.
/ var / log / messages oder das Äquivalent für Ihr Betriebssystem.
quelle