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