Puis-je enregistrer l'activité de vi?

10

Existe-t-il une méthode pour consigner les activités vi? Je soupçonne qu'un autre utilisateur émet des commandes en allant dans le shell à l'intérieur de l'éditeur vi, apparemment ces commandes ne sont pas enregistrées dans l'historique.

vnix27
la source

Réponses:

6

Vous pouvez également activer la comptabilité des processus (s / can / should /!)

Vous pouvez ensuite utiliser:

lastcomm(1)

pour voir la commande s'exécuter et si elles ont été exécutées après un fork, avec ou sans exécutable.

Combiné avec un IDS basé sur l'hôte, cela devrait vous donner ce dont vous avez besoin "pour que la justice du roi soit rendue contre lui".

chiggsy
la source
+1 pour un bon point sur la comptabilité.
Phil Hollenback
7

Comment enregistrez-vous leurs activités en ce moment? Le plus simple est de les empêcher de lancer des obus depuis vi.

# vi /home/user/.exrc
set exrc
set shell=/bin/false
# chown root:root /home/user/.exrc
# chmod 644 /home/user/.exrc
# chattr +i /home/user/.exrc

Si vous utilisez un shell spécial pour enregistrer leurs commandes, vous pouvez changer vi pour utiliser ce shell uniquement.

Steven
la source
+1 pour un bon moyen simple de restreindre l'accès à vi.
Phil Hollenback
2
mais il semble facile de contourner: "vim -u / dev / null".
jlliagre
Oui, c'est essentiellement un problème insoluble. Dès que quelqu'un accède à votre système via une connexion, il peut renverser la machine. Le mieux que vous puissiez faire est de le rendre vraiment difficile.
Phil Hollenback
4

Parlez-vous de l'histoire du shell? vi shell mode ( :sh) lance le shell par défaut de l'utilisateur Si c'est bash, vous pouvez vous assurer que la journalisation de l'historique est toujours activée en éditant le global / etc / bashrc et en ajoutant:

set HISTFILE=~/.bash_history
shopt -s histappend
PROMPT_COMMAND='history -a'

cela garantira que chaque commande utilisateur est enregistrée dans un fichier, qu'elle n'est pas écrasée et mise à jour à chaque fois que l'invite du shell apparaît.

Notez que les utilisateurs peuvent remplacer cela dans leur situation personnelle ~/.bashrc, ce n'est donc pas une garantie absolue que la journalisation aura lieu.

Certaines versions de vi (comme nvi) prennent en charge un mode sans échec qui désactive l'accès au shell, en démarrant vi as nvi -S. Vous pouvez également définir un alias global /etc/bashrcpour forcer ce mode par défaut.

Notez qu'en général, le problème des utilisateurs accédant au shell par des moyens inattendus est un problème Unix classique. Il n'y a aucun moyen de désactiver complètement cela, le mieux que vous puissiez faire est d'essayer de limiter l'accès par défaut. Un utilisateur sophistiqué (ou même un utilisateur qui sait utiliser Google) peut toujours contourner ces restrictions. Par exemple, si un utilisateur ne veut pas que son historique de shell soit enregistré, il peut toujours exécuter une nouvelle copie du shell avec les options qu'il souhaite utiliser.

Voici un bon aperçu de la façon de forcer la journalisation dans bash et des moyens de contourner la journalisation.

Enfin, avez-vous envisagé de simplement parler à l'utilisateur pour déterminer ce qu'il fait? 99% du temps, une simple communication verbale peut dissiper toute confusion. Si vous enregistrez l'activité de cet utilisateur parce que vous ne lui faites pas confiance, vous pouvez peut-être lui parler de vos préoccupations.

Phil Hollenback
la source