
Protokollieren, auf welche Dateien jeder Linux-Prozess zugreift.
Whatfiles ist ein Linux-Dienstprogramm, das protokolliert, welche Dateien ein anderes Programm auf Ihrem System liest/schreibt/erstellt/löscht. Es verfolgt auch alle neuen Prozesse und Threads, die vom Zielprozess erstellt werden.
Ich bin seit langem frustriert über das Fehlen eines einfachen Dienstprogramms, um zu sehen, welche Dateien ein Prozess von main() bis zum Beenden berührt. Egal, ob Sie einem Softwareanbieter nicht vertrauen oder sich Sorgen um Malware machen, es ist wichtig zu wissen, was ein Programm oder Installer auf Ihrem System tut. lsof beobachtet nur einen Moment in der Zeit und strace ist groß und etwas kompliziert.
mode: read, file: /home/theron/.gimp-2.8/tool-options/gimp-clone-tool, syscall: openat(), PID: 8566, process: gimp
mode: read, file: /home/theron/.gimp-2.8/tool-options/gimp-heal-tool, syscall: openat(), PID: 8566, process: gimp
mode: read, file: /home/theron/.gimp-2.8/tool-options/gimp-perspective-clone-tool, syscall: openat(), PID: 8566, process: gimp
mode: read, file: /home/theron/.gimp-2.8/tool-options/gimp-convolve-tool, syscall: openat(), PID: 8566, process: gimp
mode: read, file: /home/theron/.gimp-2.8/tool-options/gimp-smudge-tool, syscall: openat(), PID: 8566, process: gimp
mode: read, file: /home/theron/.gimp-2.8/tool-options/gimp-dodge-burn-tool, syscall: openat(), PID: 8566, process: gimp
mode: read, file: /home/theron/.gimp-2.8/tool-options/gimp-desaturate-tool, syscall: openat(), PID: 8566, process: gimp
mode: read, file: /home/theron/.gimp-2.8/plug-ins, syscall: openat(), PID: 8566, process: gimp
mode: read, file: /usr/lib/gimp/2.0/plug-ins, syscall: openat(), PID: 8566, process: gimp
mode: read, file: /home/theron/.gimp-2.8/pluginrc, syscall: openat(), PID: 8566, process: gimp
mode: read, file: /usr/share/locale/en_US/LC_MESSAGES/gimp20-std-plug-ins.mo, syscall: openat(), PID: 8566, process: gimp
mode: read, file: /usr/lib/gimp/2.0/plug-ins/script-fu, syscall: openat(), PID: 8566, process: gimp
mode: read, file: /etc/ld.so.cache, syscall: openat(), PID: 8574, process: /usr/lib/gimp/2.0/plug-ins/script-fu
mode: read, file: /etc/ld.so.cache, syscall: openat(), PID: 8574, process: /usr/lib/gimp/2.0/plug-ins/script-fu
mode: read, file: /usr/lib/libgimpui-2.0.so.0, syscall: openat(), PID: 8574, process: /usr/lib/gimp/2.0/plug-ins/script-fu
mode: read, file: /usr/lib/libgimpwidgets-2.0.so.0, syscall: openat(), PID: 8574, process: /usr/lib/gimp/2.0/plug-ins/script-fu
mode: read, file: /usr/lib/libgimpwidgets-2.0.so.0, syscall: openat(), PID: 8574, process: /usr/lib/gimp/2.0/plug-ins/script-fu
mode: read, file: /usr/lib/libgimp-2.0.so.0, syscall: openat(), PID: 8574, process: /usr/lib/gimp/2.0/plug-ins/script-fu
mode: read, file: /usr/lib/libgimpcolor-2.0.so.0, syscall: openat(), PID: 8574, process: /usr/lib/gimp/2.0/plug-ins/script-fu
grundlegende Verwendung, startet ls und schreibt die Ausgabe in eine Protokolldatei im aktuellen Verzeichnis:
$ whatfiles ls -lah ~/Documents
Ausgabedatei mit -o angeben:
$ whatfiles -o MyLogFile cd ..
Debug-Ausgabe einschließen, auf stdout statt in Protokolldatei ausgeben:
$ whatfiles -d -s apt install zoom
An einen laufenden Prozess anhängen (erfordert Root-Rechte):
$ sudo whatfiles -p 1234
Fertige Binärdateien finden Sie auf der Releases-Seite! Jemand hat es freundlicherweise auch zum Arch-Repository hinzugefügt, und letompouce hat ebenfalls eine GitLab-Pipeline eingerichtet.
gcc und make):$ cd whatfiles
$ make
$ sudo make install
Unterstützt die Architekturen x86, x86_64, ARM32 und ARM64.
Ist das nicht einfach eine Neuimplementierung von strace -fe trace=creat,open,openat,unlink,unlinkat ./program?
Ja. Allerdings zielt es darauf ab, einfacher und benutzerfreundlicher zu sein.
Gibt es Mac- und Windows-Versionen?
Nein. Das Verfolgen von Syscalls auf dem Mac erfordert task_for_pid(), was eine Codesignierung erfordert, die ich nicht zum Laufen bringen kann, und außerdem habe ich kein Interesse daran, Apple 100 $ pro Jahr zu zahlen, um freie Software zu schreiben. dtruss auf dem Mac kann verwendet werden, um einen einzelnen Prozess und seine Kinder zu verfolgen, obwohl das -t-Flag scheinbar nur einen einzelnen Syscall zum Filtern akzeptiert. fs_usage macht etwas Ähnliches, obwohl ich nicht sicher bin, ob es Kindprozesse/Threads verfolgt. Process Monitor für Windows ist ziemlich gut.
whatfiles zum Starten von Firefox verwendet wird. (Das Anhängen mit -p [PID] während der Ausführung funktioniert einwandfrei, ebenso wie das Verwenden von whatfiles zum Öffnen eines zweiten Firefox-Fensters, wenn bereits eines geöffnet ist.)Vielen Dank für Ihr Interesse, und schauen Sie sich bitte auch Cloaker, Nestur und Flying Carpet an!