Magazine Internet

Historique timestampé

Publié le 17 octobre 2007 par Peck
Cet article se trouve aussi sur http://linux-attitude.fr/post/Antisynchronistiquement

Niveau
: Historique timestampé Historique timestampé Historique timestampé Historique timestampé Historique timestampé
Résumé : PROMPT_COMMAND=

Aujourd'hui vous avez découvert un problème sur une machine.
- "Mais que s'est-il passé ?"
- "Mais qui a fait ça ?"
- "Mais il faudrait stocker les dates dans les historiques !"

Ok, faisons ça ...

Première méthode, simple, exécutons une commande à chaque ligne exécutée qui va nous stocker cette information dans un nouvel historique. Notez qu'on ne peut pas mettre cette information dans .bash_history, ca mettrait le bazar.
$ export PROMPT_COMMAND='echo `date +"%F %T"` `history 1`>> ~/.bash_timestamp'

C'est bien, mais on peut faire beaucoup mieux : pas de sous-processus (vive les perfs), pas de duplication de ligne lorsqu'on tape une ligne vide, pas de No de sequence

$ H2=0
$ export PROMPT_COMMAND='H=`history 1` ; H1=${H:0:6} ; [ $H1 -eq $H2 ] || echo `date +"%F %T"` "${H:6}" >> ~/.bash_timestamp ; H2=$H1'


C'est bien, maintenant nous voudrions avoir l'historique de tous les utilisateurs.
Mettons tout ça dans /etc/bash.bashrc, donc pour tout le monde, avec quelques adaptations :
$ H2=0
$ export PROMPT_COMMAND='H=`history 1` ; H1=${H:0:6} ; [ $H1 -eq $H2 ] || echo `date +"%F %T"` "$USER" "${H:6}" >> /var/log/bash_logs ; H2=$H1'

Pour que ça marche, il nous faut un fichier inscriptible par tout le monde.
$ touch /var/log/bash_logs
$ chmod 666 /var/log/bash_logs

Et nous allons nous préserver de la mauvaise foi des utilisateurs qui voudraient modifier ces logs a posteriori.
# en root
$ chattr +a /var/log/bash_logs

Notez qu'on ne se préserve que de leur mauvaise foi mais qu'il est impossible de se préserver de la malveillance, car il suffit de redéfinir son PROMPT_COMMAND pour que rien ne soit loggué.

Retour à La Une de Logo Paperblog

A propos de l’auteur


Peck Voir son profil
Voir son blog

l'auteur n'a pas encore renseigné son compte l'auteur n'a pas encore renseigné son compte l'auteur n'a pas encore renseigné son compte