Vorrei registrare ogni comando digitato in bash (da root o utente) così come ogni operazione sui file.
L'idea è che potrei scrivere strumenti in grado di interrogare questo file di registro e fornire informazioni molto utili.
Ad esempio, sarebbe fantastico elencare tutti i comandi mai digitati, uno per riga, con "- – -" per 8-24 ore di intervallo e "===es. 24 giugno 2014 ===” per>24 ore di intervallo. Se elimina anche i duplicati all'interno di una sessione “===…” ancora meglio!
Ciò significherebbe che ogni volta che eseguo un'attività come "aggiornare flask/mod_wsgi/apache a Python 3.x" viene lasciato un record, una traccia che posso raccogliere se devo fare la stessa cosa sei mesi dopo.
Allo stesso fine sarebbe molto bello vedere quali modifiche al file system si sono verificate dopo l'installazione di un particolare pacchetto. Questo mi farebbe sapere dove sono stati inseriti i file di configurazione.
PS Sono su Ubuntu 14.04
Risposta accettata:
Questo non è completo come la contabilità reale e può essere annullato facilmente da un utente, ma supponendo che non debba essere un vero sistema di contabilità e che sia BASH che rsyslog siano in uso, modifica il file BASH RC a livello di sistema :
sudo -e /etc/bash.bashrc
Aggiungi alla fine di quel file:
export PROMPT_COMMAND='RET_VAL=$?;logger -p local6.debug "$(whoami) [$$]: $(history 1 | sed "s/^[ ]*[0-9]+[ ]*//" ) [$RET_VAL]"'
Sopra, logger
registra l'ora, l'utente, il comando e il valore restituito dal comando. Configura la registrazione per "local6" con un nuovo file:
sudo -e /etc/rsyslog.d/bash.conf
E i contenuti...
local6.* /var/log/bash_commands.log
Riavvia rsyslog:
sudo service rsyslog restart
Disconnettersi. Accedi. Rotazione log:
sudo -e /etc/logrotate.d/rsyslog
C'è un elenco di file di registro da ruotare allo stesso modo...
/var/log/mail.warn
/var/log/mail.err
[...]
/var/log/message
Aggiungi il nuovo file di registro bash-commands in quell'elenco:
/var/log/bash_commands.log
Salva e riavvia/ricarica rsyslog. (La rotazione alla fine sovrascriverà i file di registro, quindi potrebbero essere necessarie più riflessioni o configurazioni.)
Per vedere tutti i file installati da un pacchetto:
dpkg-query -L [package_name]
Quindi potresti eseguire qualcosa del genere quando installi il software.
dpkg-query -L abc-package > /var/log/files_abc-package.log