Strace é uma ferramenta adequada para descobrir onde um programa escreveu no sistema de arquivos?

5

Eu gostaria de determinar onde um determinado aplicativo (por exemplo, navegar ) escreve no sistema de arquivos para garantir Não deixa vestígios. Sem um sistema de sandboxing dedicado, isso provavelmente não é fácil, mas estou me perguntando se existe uma maneira melhor do que simplesmente usar strace .

Por exemplo, aqui está um script simples chamado run :

#!/bin/bash

mkdir history
echo foo bar > history/hist.db
echo hello > test

Eu corro strace assim:

strace ./run 2>&1 | sed -n '/^open.*WRONLY/p' | sed 's/.*"\(.*\)"[^"]*$//'

para ver todos os arquivos (mas não diretórios) que foram escritos (não acho que isso irá capturar arquivos que foram criados, mas não gravados, como aqueles criados por touch ). Saída:

history/hist.db
test

Existe uma maneira melhor de fazer isso, já que isso fica difícil para qualquer coisa além de aplicativos triviais, ou existem opções que eu posso passar para strace (ou expressões de regex melhor talvez?) que tornam isso um pouco mais robusto? Eu corro o risco de perder arquivos gravados no sistema de arquivos?

    
por Michael A 30.10.2013 / 22:33

1 resposta

4

Você também pode usar lsof para "assistir" a um processo enquanto grava arquivos no disco. Isso é mais uma solução de pesquisa, então você possivelmente perderá alguns arquivos se eles forem pequenos e rapidamente gravados no disco, mas se o aplicativo que está gravando arquivos no disco for um servidor / serviço, você poderá usar lsof para assistir esses tipos de processos com bastante facilidade.

$ lsof -p PID

Exemplo

$ lsof -p 'pidof gnome-terminal' | head -5
COMMAND    PID USER   FD   TYPE             DEVICE SIZE/OFF      NODE NAME
gnome-ter 7423 saml  cwd    DIR              253,2    32768  10354689 /home/saml
gnome-ter 7423 saml  rtd    DIR              253,0     4096         2 /
gnome-ter 7423 saml  txt    REG              253,0   338632   1220790 /usr/bin/gnome-terminal
gnome-ter 7423 saml  mem    REG              253,0   614032   1192949 /usr/lib64/libfreetype.so.6.6.0
    
por 30.10.2013 / 23:08