Wie lese ich den aktuellen Verlauf eines noch angemeldeten Benutzers?

Wie lese ich den aktuellen Verlauf eines noch angemeldeten Benutzers?

Ich habe derzeit eine Root-SSH-Sitzung auf einem Debian Wheezy-Server und sehe, dass derzeit ein anderer Benutzer angemeldet ist (mit einem nicht privilegierten Konto). Da der Benutzer immer noch angemeldet ist, historyzeigt der Befehl nicht das Richtige an, da der Verlauf nicht gelöscht wurde und die ~/.bash_historyDatei nicht auf dem neuesten Stand ist (sie befindet sich immer noch im Speicher).

Wie kann ich einen Speicherauszug erstellen, um zu sehen, was ein Benutzer während seiner Sitzung getan hat, wenn er noch angemeldet ist?

Antwort1

Hier ist ein kleines Skript, das den Verlauf auslesen sollte. Beachten Sie, dass Sie Root-Rechte haben müssen, um Speicherplatz von anderen Prozessen zu stehlen.

#!/bin/bash
if [ $# -eq 0 ]; then
        echo "usage: $0 <bash_pid>"
        exit 1
fi
gdb -batch \
        --eval "set sysroot /" \
        --eval "attach $1" \
        --eval "call write_history(\"/tmp/bash_history-$1.txt\")" \
        --eval 'detach' \
        --eval 'q'
exit 0

PS: Es kann vorkommen, dass ein Fehler wie „Warnung: Gemeinsam genutzte Bibliothekssymbole für ... konnten nicht geladen werden“ zusammen mit einigen anderen fehlerhaften Zeilen auftritt. Versuchen Sie, die Verlaufsdatei unter /tmp/ zu finden, bevor Sie beginnen, da Sie sonst zu überzeugt sind, dass das Skript nicht funktioniert hat.

Antwort2

Auf bash_history kann man sich nicht wirklich verlassen, da es nicht immer gespeichert wird oder überschrieben werden kann. Außerdem wird bei Multisession-Nutzung normalerweise nicht alles gespeichert (das hängt natürlich von der Konfiguration ab).

Wenn Sie wirklich eine Verfolgung solcher Daten benötigen, würde ich mit der Einrichtung fortfahren acct, die über nützliche Tools verfügt, wie:

  • acDer Befehl druckt die Statistik der Benutzeranmeldungen/-abmeldungen (Verbindungszeit) in Stunden.
  • lastcommDer Befehl druckt die Informationen zu zuvor ausgeführten Befehlen des Benutzers.
  • acctonDer Befehl wird verwendet, um den Prozess für die Abrechnung ein-/auszuschalten.
  • saDer Befehl fasst Informationen zu zuvor ausgeführten Befehlen zusammen.
  • lastund lastbBefehle zeigen eine Liste der zuletzt angemeldeten Benutzer.

Installieren:

apt-get install acct

Dann müssen Sie den Dienst aktivieren

service pcacct start

verwandte Informationen