Acompanhe todos os arquivos acessados por um processo específico?

2

Recentemente houve um (publicamente não confirmado) relatório de que o Skype está acessando arquivos que não deveria sem intervenção do usuário . Eu não tenho idéia se este é o caso do Skype no linux, mas seria bom ser capaz de descobrir. Existe uma maneira de rastrear todos os arquivos acessados por um processo específico?

    
por naught101 12.10.2013 / 00:51

2 respostas

2

Inicie seu processo por meio de strace :

strace -fe open skype

Você verá a lista de cada open() syscall, ou seja, todo arquivo (ou conexão) que os processos abrirem durante sua vida útil.

Observar os descritores de arquivos abertos no momento não fornecerá um log, mas apenas uma "captura instantânea" do que o processo acessa no momento.

    
por 16.03.2015 / 20:18
2

Dado o PID do processo do Skype, você pode fazer:

for fd in /proc/$skype_pid/fd/*;do
    echo -n "File descriptor $fd points to "
    readlink "$fd"
done

Para um determinado processo, /proc/$PID/fd contém links simbólicos para todos os arquivos que o processo está aberto no momento. Os links são nomeados após o número do descritor de arquivo. Então, para encontrar uma saída onde um processo está obtendo seu stdin por exemplo, você pode readlink /proc/$pid_of_process/fd/0 . O acima irá informá-lo sobre todos os arquivos abertos pelo processo do Skype.

Se você não tiver certeza sobre o PID do seu processo, tente

$ pgrep skype

primeiro para descobrir.

Isso só funcionará em sistemas que tenham procfs, dos quais o GNU / Linux é um.

    
por 12.10.2013 / 00:56