Ce n'est pas comme ça qu'on aborde le problème. Une fois que vous donnez Shell l'accès à un utilisateur, vous confiez à cet utilisateur de faire tout ce qu'il/elle a les permissions appropriées. Oubliez la journalisation des commandes, il y a beaucoup trop de façons d'exécuter une commande dans n'importe quel système Unix.
Par exemple, l'utilisateur peut lancer un client de messagerie (la seule commande enregistrée est pine
par exemple), il y sélectionne "Compose", ce qui lance VI, et à partir de VI, il lance n'importe quelle commande qu'il souhaite à travers :!cmd
. Cette commande n'est enregistrée nulle part, et du point de vue du système, elle est comme toute application d'aide appelée par VI, comme grep ou sort. La seule commande enregistrée par le Shell était pine
.
Il semble que ce que vous voulez réellement s'appelle audit . Activez le sous-système d'audit et utilisez la fonction auditctl
et la commande auditd
du démon audit pour contrôler ce qui est enregistré. Vous trouverez plus d'informations dans le auditctl(8) page du manuel.
Notez que l'enregistrement de chaque instanciation de processus peut également ne pas être optimal. Par exemple, la simple ./configure
pour un progiciel (créé à l'aide d'autotools) est remarquable par la création de milliers d'instanciations de processus. Cela inonde le journal d'audit de tant de bruit qu'il devient très difficile de l'analyser par la suite.