Encuentre a qué archivos se leen o escriben

14

Quiero ver a qué archivos se leen o se escriben.

¿Hay algún programa o un comando para eso? Puedo recordar que usé este método para buscar virus y lugares de ocultación de malware cuando usé Windows hace unos años.

las
fuente

Respuestas:

15

Ese programa es ("Lista de archivos abiertos") .lsof

  • Si solo abre una Terminal y escribe lsof, obtendrá una gran lista de todos los archivos abiertos, en su lugar, limítelo a un comando haciendo:

    lsof -c gnome-terminal
    
  • También puede restringir su búsqueda a un directorio específico escribiendo

    lsof -c gnome-terminal -a +D /tmp
    
  • O enumere todos los archivos abiertos en un directorio específico, incluida la aplicación que lo abrió:

    lsof /dev/urandom
    

Recuerde que algunos procesos son iniciados por la raíz del superusuario , es posible que deba poner sudodelante de su comando para obtener más información sobre los archivos abiertos de dichos procesos.

Para limitar su búsqueda, puede greplíneas específicas, es decir:

lsof /dev/urandom | grep chrome

  • La FDcolumna (Descriptor de archivo) de la salida le brinda información sobre el propósito del programa que abre el archivo (no necesariamente lo que le está sucediendo en este momento):

    • r significa que el archivo está abierto para leer

    • w significa que el archivo está abierto para escritura

    • u significa que el archivo se abre para leer y escribir


Para más detalles, consulte la página del manual ( man lsof). Además, si necesita buscar cualquiera de los archivos y directorios, el Estándar de jerarquía del sistema de archivos de Linux es muy útil.

Stefano Palazzo
fuente
4

Como una opción completa de eliminación excesiva, pero que funciona en tiempo real, puede usar inotify:

sudo inotifywait -m -r /

Tenga en cuenta que esto consumirá una gran cantidad de memoria y llevará mucho tiempo configurarlo. Como dice la página del manual:

   -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.

Esto tampoco le dice qué proceso está jugando con los archivos, pero puede ayudar a identificar los cambios a medida que ocurren. El uso de "-e open" puede ayudar a reducir parte del ruido en un sistema realmente ocupado.

Kees Cook
fuente
Estoy bastante seguro de que esto no funcionará, con o sin establecer un límite superior para inotify / max_user_watches antes. Estás intentando agregar un reloj a cada archivo del sistema ...
Volker Siegel