Lorsque la gestion d’un serveur se fait à plusieurs, il peut être intéressent de connaître les commandes qui ont été éxécutées, non pas par « flicage », mais pour avoir un historique lors d’une intervention de maintenance.
Evidemment, il existe la commande que tout administrateur système connait: history.
Cependant, cette commande a ses limites car elle ne liste pas en détails les multiples connexions mais seulement l’historique des commandes éxécutées sur le shell courant.
Pour retrouver toutes les commandes éxécutées par différents utilisateurs sur le serveur, il faut éditer le fichier /etc/bash.bashrc.
nano /etc/bash.bashrc
A la fin du fichier, ajouter ce code:
PROMPT_COMMAND='history -a >(logger -t "$USER[$PWD] $SSH_CONNECTION")'
Pour la prise en compte de la modification, soit se déconnecter, soit éxécuter cette commande:
source /etc/bash.bashrc
A cet instant, toutes les commandes peuvent se retrouver dans le fichiers /var/log/messages.
Exemple:
tail -f /var/log/messages Jan 17 09:58:22 deb-srv06 root[/root] 192.168.10.56 53800 192.168.1.26: uptime Jan 17 09:58:23 deb-srv06 root[/root] 192.168.10.56 53800 192.168.1.26 22: cat /var/log/messages Jan 17 09:59:03 deb-srv06 fred[/opt] 192.168.10.175 53803 192.168.1.26 22: cd /opt/ Jan 17 09:59:04 deb-srv06 fred[/opt] 192.168.10.175 53803 192.168.1.26 22: ls Jan 17 09:59:08 deb-srv06 root[/root] 192.168.10.56 53800 192.168.1.26 22: cat /var/log/messages Jan 17 09:59:28 deb-srv06 fred[/home/ftp] 192.168.10.175 53803 192.168.1.26 22: cd /home/ftp/ Jan 17 09:59:29 deb-srv06 fred[/home/ftp] 192.168.10.175 53803 192.168.1.26 22: ls
Je voulais savoir ce que faisais mes utilisateurs sur mon serveur, je ne connaissais pas merci beaucoup pour l’astuce !