GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Kann ich den Bash-Verlauf für alle Benutzer auf einem Server durchsuchen?

Verwenden Sie getent um die Home-Verzeichnisse aufzuzählen.

getent passwd |
cut -d : -f 6 |
sed 's:$:/.bash_history:' |
xargs -d '\n' grep -s -H -e "$pattern" 

Wenn sich Ihre Home-Verzeichnisse an einem bekannten Ort befinden, könnte es so einfach sein wie

grep -e "$pattern" /home/*/.bash_history

Natürlich, wenn ein Benutzer eine andere Shell oder einen anderen Wert von HISTFILE verwendet , das wird dir nicht viel sagen. Dies wird Sie auch nicht über Befehle informieren, die nicht über eine Shell ausgeführt wurden, oder über Aliase und Funktionen und jetzt entfernte externe Befehle, die sich zu Beginn des $PATH des Benutzers in einem Benutzerverzeichnis befanden . Wenn Sie wissen möchten, welche Befehle Benutzer ausgeführt haben, benötigen Sie eine Prozessabrechnung oder ein schickeres Überwachungssystem. siehe Aktivitäten auf meinem Computer überwachen., Wie überprüfe ich, wie lange ein Prozess lief, nachdem er beendet wurde?.


find /home -name .bash_history | xargs grep <string>

Alternativ:

grep string $(find /home -name .bash_history)

Beachten Sie, dass dies Home-Verzeichnisse an Standardspeicherorten abdeckt. Es wäre besser, /etc/passwd zu parsen oder rufen Sie getent auf , und analysieren Sie die Ausgabe davon.

for i in $(getent passwd | cut -d: -f6 ); do grep string ${i}/.bash_history; done

Sie könnten

tun
find /home | grep bash_history | xargs grep "whatever"

Aber ich glaube nicht wirklich, dass das viel besser ist, als Sie dachten.


Linux
  1. So verwenden Sie Bash-Verlaufsbefehle

  2. Verwenden Sie grep, um rückwärts zu suchen

  3. Wie behalte ich meinen Bash-Verlauf sitzungsübergreifend?

  4. Wie kann ich alle gesperrten Benutzer in Linux auflisten?

  5. Wie können Sie Duplikate aus dem Bash-Verlauf entfernen?

So schließen Sie in Grep aus

Verlaufsbefehl in Linux (Bash-Verlauf)

McFly – Ein Ersatz für die „Strg+R“-Bash-Verlaufssuchfunktion

Analysieren des Bash-Verlaufs unter Linux

So führen Sie eine Grep-Suche für alle Dateien und in allen Verzeichnissen durch

Verwendung der Verlaufsfunktion in Bash Shell auf Ubuntu 16.04 LTS-Server