Es gibt mehrere Möglichkeiten, dieses Problem anzugehen
Paketsuche
Wenn der Verdacht besteht, dass ein Paket Änderungen verursacht hat, überprüfen Sie die Pakete, um festzustellen, ob die betreffende Datei Eigentümer ist. RPM enthält einen %files
Abschnitt, in dem detailliert beschrieben wird, für welche Dateien ein Paket autorisiert ist. Dies kann mit mit abgefragt werden rpm -ql
. Zum Beispiel könnte eine rohe Gewalt, um herauszufinden, welches Paket (falls vorhanden) gehört, /etc/passwd
aussehen:
$ rpm -qa | while read p; do rpm -ql $p | grep -q /etc/passwd && echo $p; done setup-2.8.71-9.el7.noarch
Diese Methode findet jedoch keine Dateien, die indirekt von einem Paket geändert werden. RPM enthalten Skripts, die beliebige Aktionen ausführen können (oder beliebige andere Codebits aufrufen, die die Änderung durchführen, nach der gesucht wird). Diese Skripte können mit aufgelistet rpm -q --scripts
und dann mit dem Code überprüft werden. Es kann hilfreich sein, die Suche auf nur die kürzlich installierten Pakete zu beschränken (prüfen Sie die Protokolle, um welche es sich handelt), da möglicherweise viel Code durchgesehen wird.
Kernel-Debugging
Der Linux-Kernel bietet verschiedene Kernel-basierte Debugging-Funktionen, die Sie anweisen können, um Sie mitzuteilen, wenn eine Datei von einer Datei berührt wird. Mit dieser Methode würde geeigneter Code für SystemTap
oder sysdig
oder was auch immer eingerichtet werden, und dann würden Sie darauf warten, um Ihnen mitzuteilen, welcher Prozess die Datei geändert hat. Zum Beispiel, sysdig
wenn etwas ein Verzeichnis ändert, an dem Sie interessiert sind:
# sysdig "fd.directory contains /var/lib/php"
sollte Details (die mit dem -p
Flag konfiguriert werden können ) für Systemaufrufe anzeigen, die dieses Verzeichnis betreffen. Dieser Befehl muss irgendwo ausgeführt werden, möglicherweise in einer tmux
Sitzung oder als benutzerdefinierter Dienst, damit er automatisch gestartet wird, bis der anstößige Code gefunden wird. (Außerdem müssen Sie möglicherweise die Debug-Ausgabe einschränken, da das Kernel-Debugging möglicherweise zu umfangreichen Informationen führt, wenn die Suche zu umfangreich ist und der Befehl längere Zeit ausgeführt wird.)