Ce n'est pas ainsi que vous abordez le problème. Une fois que vous donnez un accès shell à un utilisateur, vous lui confiez de faire tout ce pour quoi il / elle a les autorisations appropriées. Oubliez la journalisation des commandes, il existe bien trop de façons d'exécuter une commande dans n'importe quel système Unix.
Par exemple, l'utilisateur peut démarrer un client de messagerie (la seule commande enregistrée est pine
, par exemple), là-bas, il sélectionne "Composer" qui démarre le VI, et à partir du VI, il lance toute commande qu'il souhaite :!cmd
. Cette commande n'est enregistrée nulle part, et du point de vue du système, elle ressemble à n'importe quelle application d'assistance 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 un audit . Activez le sous-système d'audit et utilisez la auditctl
commande et le auditd
démon du package d' audit pour contrôler ce qui est consigné. Plus d'informations sont dans la page de manuel auditctl (8) .
Notez que la journalisation de chaque instanciation de processus peut également ne pas être optimale. Par exemple, le simple ./configure
pour un progiciel (créé à l'aide des outils automatiques) est remarquable pour créer des milliers d'instanciations de processus. Cela va inonder le journal d'audit avec tellement de bruit qu'il devient très difficile de l'analyser plus tard.
Cela me semble que vous recherchez quelque chose comme rootsh ( page de manuel ). Pour citer la page de manuel:
Malgré son nom, cela peut être utilisé pour n'importe quel utilisateur.
la source
Il vaut probablement mieux que les utilisateurs utilisent sudo (ou similaire) pour exécuter les commandes qui vous intéressent et que vous fassiez confiance aux utilisateurs à un certain niveau. À mesure que vous vous rapprochez du "contrôle total" des choses, plus il est difficile de retracer ce qu'elles font. J'ai récemment examiné des outils comme celui-ci, par exemple. Généralement, ils créent simplement des journaux qui sont difficiles à gérer si vous avez suffisamment d'utilisateurs et de machines pour que cela en vaille la peine. :)
Considérez toutes les informations que vous allez générer. De quoi vous souciez-vous? Probablement très peu - vous générez donc des journaux qui sont pour la plupart sans valeur. L'audit des choses qui vous intéressent réellement, comme d'autres le suggèrent, vous amène probablement à un meilleur état final.
la source
Bash peut être compilé avec le support syslog depuis 4.1.
Ce n'est pas infaillible (la comptabilité des processus pourrait être meilleure pour cela), mais c'est surtout une interaction avec l'utilisateur; le volume devrait être plus facile à gérer et vous pourrez passer à quelque chose de plus détaillé si vous soupçonnez quelque chose d'anormal.
Cela dit, c'est très intrusif et en tant qu'utilisateur, je m'attendrais à un avertissement de confidentialité très spécifique avant de commencer.
la source
Il y a aussi sudosh ( http://sudosh.sourceforge.net ) qui fera la journalisation des sessions. Vous avez la possibilité de l'exécuter en tant que shell défini pour un utilisateur ou via sudo. Il suit également les horaires de chaque session afin que vous puissiez rejouer la session et la regarder (y compris les sessions d'édition et ainsi de suite).
la source