Localize para quais arquivos são lidos ou gravados

14

Quero ver quais arquivos são lidos ou gravados.

Existe algum programa ou comando para isso? Lembro-me de que usei esse método para procurar vírus e esconderijos quando usei o Windows alguns anos atrás.

las
fonte

Respostas:

15

Esse programa é ("Listar arquivos abertos") .lsof

  • Se você simplesmente abrir um Terminal e digitar lsof, obterá uma lista enorme de todos os arquivos abertos; em vez disso, limite-o a um comando, fazendo:

    lsof -c gnome-terminal
    
  • Você também pode restringir sua pesquisa a um diretório específico, digitando

    lsof -c gnome-terminal -a +D /tmp
    
  • Ou liste todos os arquivos abertos em um diretório específico, incluindo o aplicativo que o abriu:

    lsof /dev/urandom
    

Lembre-se de que alguns processos são iniciados pela raiz do superusuário , pode ser necessário colocar sudona frente do seu comando para obter mais informações sobre os arquivos abertos desses processos.

Para restringir sua pesquisa, você pode greplinhas específicas, ou seja:

lsof /dev/urandom | grep chrome

  • A FDcoluna (Descritor de arquivos) da saída fornece informações sobre a finalidade do programa de abrir o arquivo (não necessariamente o que está acontecendo com ele no momento):

    • r significa que o arquivo é aberto para leitura

    • w significa que o arquivo é aberto para gravação

    • u significa que o arquivo é aberto para leitura e gravação


Para mais detalhes, consulte a página do manual ( man lsof). Além disso, se você precisar procurar algum dos arquivos e diretórios, o Linux Filesystem Hierarchy Standard é muito útil.

Stefano Palazzo
fonte
4

Como uma opção de substituição completa, mas que funciona em tempo real, você pode usar o inotify:

sudo inotifywait -m -r /

Observe que isso consumirá muita memória e levará muito tempo para ser configurado. Como diz a página de 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.

Isso também não informa qual processo está afetando os arquivos, mas pode ajudar a identificar as alterações à medida que elas ocorrem. Usar "-e open" pode ajudar a reduzir parte do ruído em um sistema muito ocupado.

Kees Cook
fonte
Tenho certeza de que isso não funcionará, com ou sem a definição de um limite mais alto para inotify / max_user_watches antes. Você está tentando adicionar um relógio para cada arquivo no sistema ...
Volker Siegel