Je voudrais enregistrer chaque commande tapée dans bash (par root ou utilisateur) ainsi que chaque opération de fichier.
L'idée est que je pourrais écrire des outils qui pourraient interroger ce fichier journal et fournir des informations très utiles.
Par exemple, il serait bon de lister toutes les commandes jamais tapées, une par ligne, avec "- - -" pour un intervalle de temps de 8 à 24h et "===par ex. 24 juin 2014 ===” pour>24h d'intervalle. S'il éliminait également les doublons dans une session "===…", c'était encore mieux !
Cela signifierait que chaque fois que j'accomplis une tâche telle que "mettre à niveau flask/mod_wsgi/apache vers Python 3.x", un enregistrement est laissé, une piste que je peux retrouver si je dois faire la même chose six mois plus tard.
Dans le même ordre d'idées, il serait très agréable de voir quelles modifications du système de fichiers se sont produites après l'installation d'un package particulier. Cela me permettrait de savoir où les fichiers de configuration ont été placés.
PS je suis sur Ubuntu 14.04
Réponse acceptée :
Ce n'est pas aussi complet que la comptabilité réelle, et cela peut être annulé facilement par un utilisateur, mais en supposant qu'il ne doit pas nécessairement s'agir d'un véritable système de comptabilité et que BASH et rsyslog sont utilisés, modifiez le fichier BASH RC à l'échelle du système. :
sudo -e /etc/bash.bashrc
Ajouter à la fin de ce fichier :
export PROMPT_COMMAND='RET_VAL=$?;logger -p local6.debug "$(whoami) [$$]: $(history 1 | sed "s/^[ ]*[0-9]+[ ]*//" ) [$RET_VAL]"'
Ci-dessus, logger
enregistre l'heure, l'utilisateur, la commande et la valeur de retour de la commande. Configurez la journalisation pour "local6" avec un nouveau fichier :
sudo -e /etc/rsyslog.d/bash.conf
Et le contenu…
local6.* /var/log/bash_commands.log
Redémarrez rsyslog :
sudo service rsyslog restart
Se déconnecter. Connectez-vous. Rotation des journaux :
sudo -e /etc/logrotate.d/rsyslog
Il existe une liste de fichiers journaux à faire pivoter de la même manière…
/var/log/mail.warn
/var/log/mail.err
[...]
/var/log/message
Ajoutez le nouveau fichier journal bash-commands dans cette liste :
/var/log/bash_commands.log
Enregistrez et redémarrez/rechargez rsyslog. (La rotation finira par écraser les fichiers journaux, donc plus de réflexion ou de configuration peuvent être nécessaires.)
Pour voir tous les fichiers installés par un package :
dpkg-query -L [package_name]
Vous pouvez donc exécuter quelque chose comme ça lorsque vous installez un logiciel.
dpkg-query -L abc-package > /var/log/files_abc-package.log