web-dev-qa-db-fra.com

Trouvez quels fichiers sont lus ou écrits

Je veux voir quels fichiers sont lus ou écrits.

Existe-t-il un programme ou une commande pour cela? Je me souviens que j'avais utilisé cette méthode pour traquer les virus et les cachettes de logiciels malveillants lorsque j'utilisais Windows il y a quelques années.

14
las

Ce programme est lsof ("Liste des fichiers ouverts") .

  • Si vous ouvrez simplement un Terminal et tapez lsof, vous obtenez une liste énorme de tous les fichiers ouverts. Limitez-la à une commande en faisant:

    lsof -c gnome-terminal
    
  • Vous pouvez également limiter votre recherche à un répertoire spécifique en tapant

    lsof -c gnome-terminal -a +D /tmp
    
  • Ou listez tous les fichiers ouverts dans un répertoire spécifique, y compris quelle application l'a ouvert:

    lsof /dev/urandom
    

Rappelez-vous que certains processus sont lancés par le superutilisateur root . Il peut être nécessaire de placer Sudo devant votre commande pour obtenir plus d'informations sur les fichiers ouverts de ces processus.

Pour affiner votre recherche, vous pouvez grep lignes spécifiques, à savoir:

lsof /dev/urandom | grep chrome

  • La colonne FD (Descripteur de fichier) de la sortie vous donne des informations sur le but du programme qui ouvre le fichier (pas nécessairement ce qui lui arrive actuellement):

    • r signifie que le fichier est ouvert en lecture

    • w signifie que le fichier est ouvert en écriture

    • u signifie que le fichier est ouvert en lecture et en écriture


Pour plus de détails, consultez le page de manuel (man lsof). De plus, si vous avez besoin de rechercher l'un des fichiers et des répertoires, le norme de hiérarchie du système de fichiers Linux est très utile.

15
Stefano Palazzo

En tant qu'option complète de destruction excessive, mais fonctionnant en temps réel, vous pouvez utiliser inotify:

Sudo inotifywait -m -r /

Notez que cela consomme beaucoup de mémoire et prend beaucoup de temps à mettre en place. Comme le dit la page de manuel:

   -r, --recursive
          Watch all subdirectories of any directories passed as arguments.
          Watches  will be set up recursively to an unlimited depth.  Sym‐
          bolic links are not  traversed.   Newly  created  subdirectories
          will also be watched.

          Warning:  If  you use this option while watching the root direc‐
          tory of a large tree, it may take quite a while until  all  ino‐
          tify watches are established, and events will not be received in
          this time.  Also, since one inotify watch  will  be  established
          per subdirectory, it is possible that the maximum amount of ino‐
          tify watches per user will be reached.  The default  maximum  is
          8192;  it  can  be  increased  by  writing  to /proc/sys/fs/ino‐
          tify/max_user_watches.

Cela ne vous dit pas non plus quel processus traite les fichiers, mais cela peut aider à identifier les modifications au fur et à mesure qu'elles se produisent. L'utilisation de "-e open" peut aider à réduire le bruit sur un système très occupé.

4
Kees Cook