
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, history
zeigt der Befehl nicht das Richtige an, da der Verlauf nicht gelöscht wurde und die ~/.bash_history
Datei 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:
ac
Der Befehl druckt die Statistik der Benutzeranmeldungen/-abmeldungen (Verbindungszeit) in Stunden.lastcomm
Der Befehl druckt die Informationen zu zuvor ausgeführten Befehlen des Benutzers.accton
Der Befehl wird verwendet, um den Prozess für die Abrechnung ein-/auszuschalten.sa
Der Befehl fasst Informationen zu zuvor ausgeführten Befehlen zusammen.last
undlastb
Befehle zeigen eine Liste der zuletzt angemeldeten Benutzer.
Installieren:
apt-get install acct
Dann müssen Sie den Dienst aktivieren
service pcacct start