Esta é uma pergunta hipotética, não um problema que tenho atualmente.
Como você detecta qual processo usou um arquivo agora ou no passado ?
Para descobrir qual processo está acessando filename
agora, lsof filename
ou fuser filename
fará o trabalho. Mas e se alguém quisesse saber quais processos acessaram filename
nas últimas 24 horas ?
Alguém poderia se safar com esse hack feio (*)
while true; do fuser filename; sleep 1; done
e deixá-lo funcionar por 24 horas em outro período. Mas existe realmente um sistema melhor, sem configurar toda uma estrutura de auditoria?
(*) sem falar que fuser
poderia não detectar o acesso se demorasse menos de 1 segundo...
Se o seu sistema tiver a auditoria habilitada, você poderá usar esse subsistema para auditar o acesso a arquivos específicos.
Por exemplo, para auditar arquivos abrindo (ou tentando abrir) o
/etc/shadow
arquivo, você pode usar a seguinte regra:Posteriormente, você pode usar este comando para listar os eventos auditados correspondentes aos acessos a este arquivo:
Observe que você precisa ser root para configurar e consultar o sistema de auditoria.
Consulte a página de manual auditctl(8) para obter mais detalhes sobre como definir regras e a página de manual ausearch(8) para obter detalhes sobre como consultar os logs de auditoria.
Se você não tiver a auditoria habilitada, procure informações sobre como fazer isso especificamente para sua distribuição Linux, pois os detalhes variam.