Wenn ich mich per SSH auf einem Linux-Server (Ubuntu) anmelde, stelle ich fest, dass alle von anderen Benutzern auf dem Server ausgeführten Bash-Befehle im Befehlsverlauf gespeichert werden. Gibt es eine Möglichkeit, die Befehle, die ich in die Befehlszeile eingegeben habe, vor anderen Benutzern auf dem Server zu verbergen?
Antwort1
Es gibt viele Möglichkeiten, Ihren Befehlsverlauf auszublenden. Es ist jedoch keine gute Idee, den Verlauf vollständig auszuschalten, da er sehr nützlich ist. Hier sind drei gute Möglichkeiten, ihn vorübergehend auszuschalten.
Schnellste Lösung: Typ
unset HISTFILE
Dadurch wird verhindert, dass alle in der aktuellen Anmeldesitzung ausgeführten Befehle beim Abmelden in der Datei .bash_history gespeichert werden. Beachten Sie, dass HISTFILE beim nächsten Anmelden zurückgesetzt wird, sodass der Verlauf wie gewohnt gespeichert wird. Beachten Sie auch, dass dadurch Folgendes entfernt wird:alleBefehle aus der Sitzung, einschließlich der Befehle, die ausgeführt wurden, bevor Sie unset HISTFILE eingegeben haben, was möglicherweise nicht das ist, was Sie wollen. Ein weiterer Nachteil ist, dass Sie nicht sicher sein können, dass Sie es richtig gemacht haben, bis Sie sich abmelden, da Sie mit Bash immer noch den Aufwärtspfeil verwenden können, um vorherige Befehle anzuzeigen.
Beste Lösung: Geben Sie vor einem Befehl ein Leerzeichen ein
Probieren Sie es aus und drücken Sie dann den Pfeil nach oben, um zu sehen, ob es zu Ihrem Verlauf hinzugefügt wurde. Einige Websites haben es bereits so eingerichtet, dass solche Befehle nicht gespeichert werden. Wenn es nicht funktioniert, fügen Sie die Zeile
export HISTCONTROL=ignoreboth
zu Ihrer .bashrc-Datei hinzu. Wenn Sie sich in Zukunft anmelden, werden Befehle, die mit einem Leerzeichen beginnen, sofort vergessen.Am einfachsten zu merken: Typ
sh
Dadurch wird eine Subshell mit der ursprünglichen Bourne-Shell gestartet. Alle darin geschriebenen Befehle (bis Sie
exit
) werden nicht in Ihrem Verlauf gespeichert. Jeder, der sich Ihre Verlaufsdatei ansieht, kann sehen, dass Sie sh ausgeführt haben (was verdächtig ist), aber nicht, was Sie danach ausgeführt haben.
Es gibt viele andere Möglichkeiten, dies zu tun. Sie können Bash sogar sagen, welche Befehle nie gespeichert werden sollen (HISTIGNORE). Sehen Sie sich die Manpage für bash(1) an und suchen Sie nach HIST, um viele Möglichkeiten zu sehen.
Antwort2
Der Befehlszeilenverlauf für bash
Shellsitzungen wird in der ~/.bash_history
Datei gespeichert. Wenn diese Datei nicht existiert, wird sie ohne Leseberechtigung für andere Benutzer erstellt.
Sie können die Anzahl der Befehle ändern, die bash
in dieser Datei gespeichert werden, indem Sie die HISTFILESIZE
Umgebungsvariable festlegen. Wenn Sie sie auf Null setzen, wird die Verlaufsdatei auf die Größe Null gekürzt. Der Standardwert ist 500. Wenn Sie die Variable HISTFILE
( unset HISTFILE
) nicht setzen, werden auch keine Befehle in der Verlaufsdatei gespeichert.
Allerdings ist das aktuelle Setup des Servers, das Sie (in den Kommentaren) beschreiben, einfach falsch.
Es sollte keinen Grund geben, mehreren Benutzern zu gestatten, sich anzumelden und eine interaktive Shell auf dem root
Konto zu verwenden. Erwägen Sie sudo
stattdessen die Verwendung mehrerer privater Benutzerkonten!
Der Befehlsverlauf für ist äußerst wertvoll root
, egal ob für interaktive Sitzungen oder bei der Verwendung von .sudo
besondersroot
wenn mehrere Benutzer Zugriff auf das System haben .
Ihr Team wird wissen wollengenauwas der root
Benutzer gemacht hat, da Fehlkonfigurationen oder andere Missgeschicke, die von diesem Benutzer verursacht wurden, am besten untersucht und behoben werden müssen. Mit einem Befehlszeilenverlauf ist es viel einfacher herauszufinden, warum etwas schief gelaufen ist. Das sudo
Dienstprogramm protokolliert aus diesem Grund zusätzlich jeden Aufruf der Syslog-Funktion mit Zeitstempeln und mit vollständiger Befehlszeile sowie mit dem Benutzernamen des ausführenden Benutzers sudo
.
BEARBEITEN: Wir hatten vor Kurzem Probleme mit einem Glasfasernetzwerk auf einem Cluster von Linux-Rechnern bei der Arbeit. Es stellte sich heraus, dass einige Treiber durch die falsche Version ersetzt wurden, als ein dummer Benutzer mit sudo
Zugriff ein unvorsichtiges Paket-Upgrade durchführte. Wir konnten dies herausfinden, indem wir uns die Systemprotokolle und die sudo
darin enthaltenen Zeitstempel ansahen. Der „dumme Benutzer“ stellte sich als niemand anderes als ich selbst heraus!
Antwort3
Geben Sie nach der Anmeldung den folgenden Befehl ein:
HISTFILE=
Dadurch wird die Protokollierung aller nachfolgenden Befehle in der Verlaufsdatei blockiert.