Ich möchte jeden in Bash eingegebenen Befehl (entweder von Root oder Benutzer) sowie jede Dateioperation protokollieren.
Die Idee ist, dass ich Tools schreiben könnte, die diese Protokolldatei abfragen und sehr nützliche Informationen liefern könnten.
Zum Beispiel wäre es großartig, alle jemals eingegebenen Befehle aufzulisten, einen pro Zeile, mit „- – -“ für 8-24-Stunden-Zeitlücke und „===“, z. 24. Juni 2014 ===” für>24-Stunden-Lücke. Wenn es auch Duplikate innerhalb einer „===…“-Sitzung eliminiert, noch besser!
Das würde bedeuten, dass jedes Mal, wenn ich eine Aufgabe erledige, wie z. B. „Upgrade von Kolben/mod_wsgi/Apache auf Python 3.x“, ein Datensatz zurückbleibt, eine Spur, die ich aufgreifen kann, wenn ich sechs Monate später dasselbe tun muss.
Zum gleichen Zweck wäre es sehr schön zu sehen, welche Dateisystemänderungen nach der Installation eines bestimmten Pakets aufgetreten sind. Das würde mich wissen lassen, wo die Konfigurationsdateien abgelegt wurden.
PS:Ich verwende Ubuntu 14.04
Akzeptierte Antwort:
Dies ist nicht so umfassend wie eine echte Buchhaltung und kann von einem Benutzer leicht rückgängig gemacht werden, aber unter der Annahme, dass es sich nicht um ein echtes Buchhaltungssystem handeln muss und sowohl BASH als auch rsyslog verwendet werden, bearbeiten Sie die systemweite BASH-RC-Datei :
sudo -e /etc/bash.bashrc
An das Ende dieser Datei anhängen:
export PROMPT_COMMAND='RET_VAL=$?;logger -p local6.debug "$(whoami) [$$]: $(history 1 | sed "s/^[ ]*[0-9]+[ ]*//" ) [$RET_VAL]"'
Oben, logger
zeichnet Zeit, Benutzer, Befehl und Befehlsrückgabewert auf. Protokollierung für „local6“ mit einer neuen Datei einrichten:
sudo -e /etc/rsyslog.d/bash.conf
Und der Inhalt…
local6.* /var/log/bash_commands.log
Starten Sie rsyslog neu:
sudo service rsyslog restart
Ausloggen. Anmelden. Protokollrotation:
sudo -e /etc/logrotate.d/rsyslog
Es gibt eine Liste von Protokolldateien, die auf die gleiche Weise rotiert werden müssen …
/var/log/mail.warn
/var/log/mail.err
[...]
/var/log/message
Fügen Sie die neue Protokolldatei für bash-Befehle zu dieser Liste hinzu:
/var/log/bash_commands.log
rsyslog speichern und neu starten/laden. (Die Rotation wird schließlich Protokolldateien überschreiben, daher ist möglicherweise mehr Nachdenken oder Konfiguration erforderlich.)
Um alle Dateien zu sehen, die ein Paket installiert hat:
dpkg-query -L [package_name]
Sie könnten also so etwas ausführen, wenn Sie Software installieren.
dpkg-query -L abc-package > /var/log/files_abc-package.log