Descubra quais arquivos são lidos ou gravados para

13

Eu quero ver quais arquivos são lidos ou gravados.

Existe algum programa ou um comando para isso? Lembro-me de ter usado esse método para procurar vírus e sites de esconderijo de malware quando usei o Windows alguns anos atrás.

    
por las 09.02.2011 / 13:08

2 respostas

14

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

  • Se você acabou de abrir um Terminal e digitar lsof , você terá uma lista enorme de todos os arquivos abertos, limitando-os 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 que alguns processos são iniciados pelo superusuário root , você pode precisar colocar sudo na frente de seu comando para obter mais informações sobre os arquivos abertos de tais processos.

Para restringir sua pesquisa, você pode usar grep linhas específicas, por exemplo:

lsof /dev/urandom | grep chrome
  • A coluna FD (Descritor de Arquivo) da saída fornece informações sobre o propósito do programa de abrir o arquivo (não necessariamente o que está acontecendo no momento):

    • r significa que o arquivo está aberto para leitura

    • w significa que o arquivo está aberto para gravação

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

Para mais detalhes, consulte a página de manual ( man lsof ). Além disso, se você precisar procurar qualquer um dos arquivos e diretórios, o Padrão de Hierarquia do Sistema de Arquivos do Linux é muito útil.

    
por Stefano Palazzo 09.02.2011 / 13:29
3

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

sudo inotifywait -m -r /

Observe que isso consumirá uma grande quantidade de memória e levará muito tempo para ser configurado. Como a manpage diz:

   -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á mexendo com os arquivos, mas pode ajudar a identificar as mudanças conforme elas acontecem. Usar "-e open" pode ajudar a reduzir parte do ruído em um sistema muito ocupado.

    
por Kees Cook 10.02.2011 / 07:54