De repente, três arquivos apareceram no meu diretório pessoal, chamados "client_state.xml", "lockfile" e "time_stats_log". Os dois últimos estão vazios. Eu estou querendo saber como eles chegaram lá. Não é a primeira vez que isso acontece, mas a última vez foi há semanas; Eu apaguei os arquivos e nada quebrou ou reclamou. Não consegui pensar no que estava fazendo no momento relatado por stat $filename
. Existe alguma maneira de descobrir de onde eles vieram?
Como alternativa, existe uma maneira de monitorar o diretório inicial (mas não os subdiretórios) para a criação de arquivos?
files
monitoring
Lobo
fonte
fonte
Respostas:
Não acredito que haja uma maneira de determinar qual programa criou um arquivo.
Para sua pergunta alternativa: Você pode observar a recriação do arquivo usando
inotify
.inotifywait
é uma interface de linha de comandos para oinotify
subsistema; você pode pedir para procurarcreate
eventos no diretório inicial:Você provavelmente deseja executá-lo com
-m
(monitor), que informa para não sair depois de ver o primeiro eventofonte
inotify
? Não está instalado (kernel 2.6.34) e não existe/dev/inotify
.CONFIG_INOTIFY_USER
(Filesystems
->Inotify support for userspace
).inotifywait
provavelmente está em um pacote chamado algo comoinotify-tools
inotify-tools
pacote, então agora tenhoinotifywait
(einotifywatch
). Eu testei e parece funcionar.Você pode assistir a tudo o que acontece em um sistema de arquivos acessando-o através do LoggedFS . Este é um sistema de arquivos empilhados que registra todos os acessos em uma árvore de diretórios.
O registro de todo o diretório pessoal pode reduzir a velocidade do sistema. Você pelo menos desejará escrever um arquivo de configuração com filtros rigorosos.
Se você tiver acesso root, no Linux, poderá usar o subsistema de auditoria para registrar um grande número de coisas, incluindo acessos ao sistema de arquivos. Verifique se o
auditd
daemon foi iniciado e, em seguida, configure com o qual deseja fazer logonauditctl
. Cada operação registrada é registrada em/var/log/audit/audit.log
(em distribuições típicas). Para começar a assistir um arquivo específico:ou na forma longa
Se você colocar uma observação em um diretório (com
-w
ou-F dir=
), os arquivos nele e seus subdiretórios recursivamente também serão observados.fonte
Você pode dar uma olhada
auditd
, este pacote permite que você faça auditorias de segurança e obtenha muitas informações sobre quem mudou o quê no sistema de arquivos.fonte
Sei que essa é uma pergunta antiga, mas vou sugerir outra abordagem, caso alguém ache útil. Originalmente, eu postei isso como resposta a uma pergunta que foi enganada para esta.
Uma opção é usar
sysdig
: um aplicativo de monitoramento de sistema de código aberto. Utilizando-o, você pode monitorar a atividade em um arquivo por nome. Suponha que você desejasse ver qual processo estava criando um arquivo chamado/tmp/example.txt
:A partir dessa saída, você pode ver que um processo chamado
touch
pid 5470 abriu o arquivo.Se você quiser obter mais informações, poderá executar no "modo de captura" onde um rastreamento de chamada do sistema é coletado:
Aguarde a criação do arquivo, pare
sysdig
e execute:Isso permitirá que você explore tudo o que aconteceu. Você pode pressionar
<F2>
e selecionarFiles
, pressione<F4>
para procurar o nome do arquivo e, em seguida, pressione<F6>
para "dig" (que mostrará uma saída semelhante ao comando acima). Com isso, você pode usar a mesma abordagem para encontrar informações sobre o processo que realmente criou o arquivo.Existe uma versão GUI do
csysdig
chamadosysdig-inspect
, se é mais a sua xícara de chá.fonte
Você não precisa,
inotify
portanto, pode escrever um script que verifique o arquivo em um loop:fonte