Unsere kleine Firma betreibt einen Ubuntu Server 11.10, auf den einige Leute SSH-Zugriff haben. Manchmal werden auch die eigentlichen Terminals verwendet. Wie können wir alle Bash-Befehle zusammen mit Benutzer- und Zeitstempel lokal protokollieren?
Wir können davon ausgehen, dass niemand schändlich ist und aktiv versucht, die Protokollierung zu vermeiden, aber wir würden es dennoch vorziehen, dass die Benutzer keinen direkten Schreibzugriff auf ihre Protokolldateien haben. Gleichzeitige Sitzungen müssen korrekt behandelt werden.
PROMPT_COMMAND
eine Nicht-Bash-Shell zurückgesetzt oder deaktiviert oder ausgeführt wird.In dieser Hinsicht kann ein Prozessabrechnungssystem hilfreich sein, insbesondere das Paket acct , das die Befehle lastcomm und ac bereitstellt.
Der Befehl ac gibt eine Statistik über die Verbindungszeit der Benutzer in Stunden aus. Dies ist die Zeitspanne, in der der Benutzer über SSH oder ein serielles Terminal oder über die Konsole mit dem System verbunden war.
Der Befehl lastcomm zeigt Informationen zu den zuvor ausgeführten Befehlen an. Die neuesten Einträge stehen oben in der Liste. Außerdem wird die Gesamt-CPU-Zeit angezeigt, die jeder Prozess verwendet hat.
Ein altes Tutorial, das hilfreich sein könnte, ist hier:
http://www.linuxjournal.com/article/6144?page=0,1
Andere Abrechnungsbefehle wie last und so weiter finden Sie in diesem Tutorial:
http://www.techrepublic.com/article/system-accounting-in-linux/1053377
quelle
Sie könnten snoopy verwenden .
Der Snoopy Logger passt möglicherweise gut zu Ihrem Zweck. Es ist nicht als unvermeidbare Protokollierungslösung gedacht, sondern als hilfreiches Tool für fleißige Administratoren, die lieber den Überblick über ihre eigenen Aktionen behalten möchten.
Offenlegung: Ich bin snoopy Betreuer.
quelle
Sie finden hier ein Skript, mit dem Sie alle Bash- Befehle / -Infos in eine Textdatei oder einen Syslog- Server schreiben können, ohne einen Patch oder ein spezielles ausführbares Tool zu verwenden.
Sehr einfach zu implementieren, da es sich um ein einfaches Shell-Skript handelt, das bei der Initialisierung der Bash einmal aufgerufen werden muss .
Es ist kostenlos und ich hoffe, es entspricht Ihren Bedürfnissen.
quelle
Um zu gewährleisten, dass mehrere Sitzungen die Verlaufsdatei nicht überschreiben, müssen Sie "shopt -s histappend" in eine Bash-Startdatei einfügen. Siehe auch diese Frage zum selben Problem.
quelle
Versuchen Sie dies (die obigen Lösungen funktionieren mit Bash 4.3 nicht zu 100%):
Dies führt die Protokollierung durch UND verhindert die Protokollierung von Zeitstempeln, die für die Bash-Verlaufsdatei verwendet werden. die trap wird benötigt, da bash nach mehrmaligem drücken von strg + c die signale an den "subjob" sendet (getestet mit bash 4.3). dies erzwingt die Abmeldung des aktuellen Benutzers (zB mit sudo eingeloggt)
quelle
Sie können auch versuchen, acct zu installieren. Acct führt einen detaillierten Audit-Trail über die Aktivitäten auf Ihren Linux-Systemen.
quelle