
Registra los archivos a los que accede cualquier proceso de Linux.
whatfiles es una utilidad de Linux que registra qué archivos otro programa lee/escribe/crea/elimina en tu sistema. También rastrea cualquier proceso o hilo nuevo creado por el proceso objetivo.
Durante mucho tiempo me ha frustrado la falta de una utilidad simple para ver qué archivos toca un proceso desde main() hasta la salida. Ya sea que no confíes en un proveedor de software o que te preocupe el malware, es importante poder saber qué hace un programa o instalador en tu sistema. lsof solo observa un momento en el tiempo y strace es grande y algo complicado.
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 básico: ejecuta ls y escribe la salida en un archivo de registro en el directorio actual:
$ whatfiles ls -lah ~/Documents
Especificar la ubicación del archivo de salida con -o:
$ whatfiles -o MiArchivoDeRegistro cd ..
Incluir salida de depuración, imprimir en stdout en lugar de archivo de registro:
$ whatfiles -d -s apt install zoom
Adjuntar a un proceso que se está ejecutando actualmente (requiere privilegios de root):
$ sudo whatfiles -p 1234
¡Los binarios listos para usar están en la página de lanzamientos! Alguien también lo agregó amablemente al repositorio de Arch, y letompouce configuró un pipeline de GitLab también.
gcc y make):$ cd whatfiles
$ make
$ sudo make install
Soporta las arquitecturas x86, x86_64, ARM32 y ARM64.
¿No es esto solo una reimplementación de strace -fe trace=creat,open,openat,unlink,unlinkat ./program?
Sí. Aunque aspira a ser más simple y fácil de usar.
¿Hay versiones para Mac y Windows?
No. Rastrear syscalls en Mac requiere task_for_pid(), que necesita tener la firma de código, algo que no he logrado que funcione, y además no tengo interés en pagarle a Apple $100/año para escribir software libre. dtruss en Mac se puede usar para seguir un solo proceso y sus hijos, aunque la bandera -t parece aceptar solo una syscall para filtrar. fs_usage hace algo similar aunque no estoy seguro de si sigue a los procesos/hilos hijos. Process Monitor para Windows es bastante bueno.
whatfiles para iniciar Firefox. (Adjuntar con -p [PID] una vez que está funcionando funciona bien, al igual que usar whatfiles para iniciar una segunda ventana de Firefox si ya hay una abierta).Gracias por tu interés, y por favor también echa un vistazo a Cloaker, Nestur y Flying Carpet!