Verbergen des Befehlsverlaufs vor anderen Benutzern auf einem Linux-Server

Verbergen des Befehlsverlaufs vor anderen Benutzern auf einem Linux-Server

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.

  1. Schnellste Lösung: Typunset 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.

  2. 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=ignorebothzu Ihrer .bashrc-Datei hinzu. Wenn Sie sich in Zukunft anmelden, werden Befehle, die mit einem Leerzeichen beginnen, sofort vergessen.

  3. Am einfachsten zu merken: Typsh

    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 bashShellsitzungen wird in der ~/.bash_historyDatei gespeichert. Wenn diese Datei nicht existiert, wird sie ohne Leseberechtigung für andere Benutzer erstellt.

Sie können die Anzahl der Befehle ändern, die bashin dieser Datei gespeichert werden, indem Sie die HISTFILESIZEUmgebungsvariable 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 rootKonto zu verwenden. Erwägen Sie sudostattdessen 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 .sudobesondersrootwenn mehrere Benutzer Zugriff auf das System haben .

Ihr Team wird wissen wollengenauwas der rootBenutzer 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 sudoDienstprogramm 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 sudoZugriff ein unvorsichtiges Paket-Upgrade durchführte. Wir konnten dies herausfinden, indem wir uns die Systemprotokolle und die sudodarin 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.

verwandte Informationen