existem várias maneiras de abordar esse problema
pesquisa de pacotes
Se um pacote for suspeito de causar alguma alteração, inspecione os pacotes para ver se algum deles possui o arquivo em questão; O RPM contém uma seção %files
que detalha quais arquivos um determinado pacote é autoritativo. Isso pode ser consultado com rpm -ql
. Por exemplo, uma força bruta para descobrir qual pacote (se houver) possui o /etc/passwd
:
$ rpm -qa | while read p; do rpm -ql $p | grep -q /etc/passwd && echo $p; done
setup-2.8.71-9.el7.noarch
Este método, no entanto, não encontrará arquivos que sejam indiretamente modificados por um pacote; O RPM contém scripts que podem executar ações arbitrárias (ou chamar outros bits arbitrários de código que realizam a mudança sendo procurada). Esses scripts podem ser listados com rpm -q --scripts
e, em seguida, esse código é inspecionado. Isso pode ajudar a limitar a pesquisa apenas aos pacotes recentemente instalados (verifique os registros de quais deles são), pois pode haver muito código para examinar.
depuração do kernel
O kernel linux oferece vários recursos de depuração baseados em kernel que podem ser instruídos a informar se algo toca em um determinado arquivo. Com este método, o código adequado para SystemTap
ou sysdig
ou o que seria configurado, e então você esperaria que isso informasse qual processo modificou o arquivo. Por exemplo, com sysdig
se algo estiver modificando um diretório no qual você está interessado:
# sysdig "fd.directory contains /var/lib/php"
deve mostrar detalhes (que podem ser configurados com o -p
flag) em chamadas do sistema envolvendo esse diretório. Esse comando precisará ser deixado em algum lugar, possivelmente em uma sessão tmux
ou como um serviço personalizado, para que seja iniciado automaticamente até que o código incorreto possa ser encontrado. (Além disso, você pode precisar limitar a saída de depuração, pois a depuração do kernel pode produzir grandes quantidades de informações se a pesquisa for muito ampla e o comando permanecer em execução por longos períodos de tempo.)