
Registra quali file vengono acceduti da qualsiasi processo Linux
Whatfiles è un'utilità Linux che registra quali file un altro programma legge/scrive/crea/cancella sul tuo sistema. Traccia anche tutti i nuovi processi e thread creati dal processo target.
Sono stato a lungo frustrato dalla mancanza di una semplice utility per vedere quali file un processo tocca da main() fino all'uscita. Che tu non ti fidi di un venditore di software o sia preoccupato per il malware, è importante sapere cosa un programma o un installer fa al tuo sistema. lsof osserva solo un istante nel tempo e strace è grande e un po' complicato.
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
uso base, avvia ls e scrive l'output in un file di log nella directory corrente:
$ whatfiles ls -lah ~/Documents
specifica la posizione del file di output con -o:
$ whatfiles -o MyLogFile cd ..
include output di debug, stampa su stdout invece che su file di log:
$ whatfiles -d -s apt install zoom
collega a un processo in esecuzione (richiede privilegi di root):
$ sudo whatfiles -p 1234
I binari pronti all'uso sono nella pagina releases! Qualcuno ha anche gentilmente aggiunto il tool al repository Arch, e letompouce ha anche impostato una pipeline GitLab.
gcc e make):$ cd whatfiles
$ make
$ sudo make install
Supporta le architetture x86, x86_64, ARM32 e ARM64.
Non è solo una reimplementazione di strace -fe trace=creat,open,openat,unlink,unlinkat ./program?
Sì. Anche se mira ad essere più semplice e più facile da usare.
Esistono versioni per Mac e Windows?
No. Tracciare le syscall su Mac richiede task_for_pid(), che richiede il code signing, che non riesco a far funzionare, e comunque non ho interesse a pagare Apple $100/anno per scrivere software gratuito. dtruss su Mac può essere usato per seguire un singolo processo e i suoi figli, anche se il flag -t sembra accettare solo una singola syscall su cui filtrare. fs_usage fa qualcosa di simile anche se non sono sicuro se segua i processi/thread figli. Process Monitor per Windows è piuttosto fantastico.
whatfiles viene usato per avviare Firefox. (Collegarsi con -p [PID] una volta che è in esecuzione funziona bene, così come usare whatfiles per avviare una seconda finestra di Firefox se una è già aperta.)Grazie per il tuo interesse, e dai un'occhiata anche a Cloaker, Nestur, e Flying Carpet!