Comment puis-je vérifier l'historique des commandes utilisateur sous Unix?

13

Je sais que la commande «historique» me donne une liste des commandes que j'ai tapées dans le terminal Unix.

Comment puis-je voir l'historique des commandes de tous les utilisateurs actuellement connectés au système?

Gaffe
la source
Pas lié à la programmation. Je vous suggère de demander sur superuser.com .
Il n'y a pas d'outil standard pour obtenir les informations, donc je pense que c'est lié à la programmation (au moins dans le sens de «scripting»).
IanH

Réponses:

11

Vous obtenez une liste des utilisateurs actuellement connectés dans /var/run/utmp(voir man 5 utmp). L'historique est stocké dans ~ / .history ou pour l'utilisateur bash dans ~ / .bash_history. D'autres shells peuvent utiliser d'autres fichiers d'historique, il n'est donc pas si facile d'obtenir vraiment toutes les informations.

De plus, si un utilisateur est connecté plusieurs fois, le fichier .bash_history n'est pas toujours fiable.

Pour lire le utmpfichier, un "frontend" est appelé who, vous pouvez donc également écrire un script shell pour parcourir les utilisateurs actuellement connectés.

IanH
la source
2
L'historique actuel est conservé en mémoire. Le fichier d'historique affiche uniquement ce qui a été écrit à l'aide history -aou similaire ou lorsqu'un utilisateur quitte le shell.
pause jusqu'à nouvel ordre.
2
Notez que les noms de fichiers donnés dans cette réponse ne sont que les valeurs par défaut. Chaque utilisateur aurait pu définir son propre emplacement (voir la réponse de Joy). Si un utilisateur utilise différents shells, il est possible qu'il puisse stocker ses historiques dans des emplacements différents et non par défaut (par exemple ~ / mybashhist, ~ / histories / ksh ou somesuch). Sachez également que jeter un œil à des données utilisateur comme celles-ci peut avoir des implications juridiques.
DevSolar
3
echo $HISTFILE

Affichez ensuite ce fichier.

Joie
la source
1
Cela ne fonctionne que si vous avez précédemment sourcé l'environnement de cet utilisateur (car il pourrait avoir défini HISTFILEautre chose).
DevSolar