Conserver l'historique de vos commandes sous Linux et Unix

Vous connaissez à coup sûr la commande history sous Linux ! Savez vous que vous pouvez contrôler la taille et le format du fichier ? Il suffit pour cela d’utiliser les variables d’environnement suivantes :

  • HISTFILESIZE définit la taille maximale en octets de votre fichier qui contient l’historique de vos commandes
  • HISTSIZE contient le nombre maximum de lignes du même fichier
  • HISTTIMEFORMAT définit le format de stockage de l’historique des commandes ; vous pouvez ainsi stocker la date de l’exécution de la commande avec elle.

Voici par exemple, le contenu de mon fichier .bash_profile qui permet d’assurer que je retrouve à peu prêt toutes mes commandes ainsi que le moment (date et heure) de leur exécution :

export HISTFILESIZE=1000000000
export HISTSIZE=1000000
export HISTTIMEFORMAT="%F %T"

Evidemment à moins d’utiliser rlwrap et un alias, l’historique d’exécution de SQL*Plus par exemple n’en fait pas partie. D’autre part, l’utilisateur peut, à volonté éditer et donc modifier le contenu de l’historique des commandes… Attention donc si vous avez l’habitude de vous tromper dans vos copier/coller ou de passer des mots de passe en paramètre de vos lignes de commandes. 

Si vous cherchez une solution pour auditer le travail de vos utilisateurs, vous préfèrerez utiliser d’autres outils comme GNU Accounting Utilities ou sudo.