Come monitorare quali file vengono aperti


9

Esiste uno strumento per monitorare quali processi aprono quali file sul sistema in modo da poter rintracciare quale processo continua a toccare un file specifico?

Lsof può scoprire se lo esegui mentre il processo ha il file aperto, ma se si tratta di un processo di breve durata che viene eseguito di tanto in tanto, non puoi rilevarlo con lsof. Serve qualcosa che usi la traccia del kernel.


Hai verificato inotify? Vedi la risposta di @ Kees qui per esempio: askubuntu.com/questions/25442/… Ci sono un paio di link sulla mia risposta qui: askubuntu.com/questions/29566/…
belacqua

@jgbelacua nessuno dei due è proprio quello che sto cercando. Inotify può dirti quando viene toccato un determinato file e lsof può dirti quali file ha aperto un processo o quale processo ha aperto un file, ma devo capire quale processo continua a toccare un file, quindi chiuderlo prima di poterlo fare corri lsof per prenderlo.
psusi,

Risposte:


7

Potresti forse usare il sistema di controllo per questo. È un po 'pesante, ma qualcosa del genere dovrebbe funzionare (in /etc/audit/audit.rules):

# delete all other rules
-D

# watch the file in question
-w /path/to/file -p rwxa

e quindi penso che sia necessario riavviare auditd:

sudo service audit restart

(Nel caso in cui non sia installato, è nel pacchetto auditd.) Il colpevole può quindi essere trovato in /var/log/audit/audit.log.


Perfetto! Questo è esattamente quello che stavo cercando.
psusi,

0

Sfortunatamente il meccanismo utilizzato da Linux per consentire di monitorare i file è inotificato, il che non fornisce informazioni sufficienti per estrarre dati utili: ottieni solo il nome del file e l'azione che è stata eseguita.

Ho provato a usare qualcosa del genere:

sudo inotifywait -mr somedir --format "%w%f" | while read file; do echo -n "$file => ";lsof -b $file; echo ""; done

Questo ascolta per inotificare gli eventi nella directory specificata e per ogni evento esegue lsof per provare a catturare il processo che tocca il file. Sfortunatamente per la maggior parte degli accessi che ho testato (come usare un editor per scrivere su un file) il comando LSOF è solo per rallentare e non riesce a catturare il processo offensivo.

Se i tuoi processi eseguono un IO più intenso sui file problematici, il tuo chilometraggio può variare. In bocca al lupo.


0

fnotifystat è uno strumento che è stato progettato per guardare l'attività dei file linux

sudo apt-get install fnotifystat
sudo fnotifystat
Total   Open  Close   Read  Write   PID  Process         Pathname
  7.0    1.0    1.0    5.0    0.0   2075 libvirtd        /proc/cpuinfo
  6.0    2.0    2.0    2.0    0.0   2075 libvirtd        /sys/devices/system/cpu/cpu0/topology/physical_package_id
  6.0    2.0    2.0    2.0    0.0   2075 libvirtd        /sys/devices/system/cpu/cpu1/topology/physical_package_id
  6.0    2.0    2.0    2.0    0.0   2075 libvirtd        /sys/devices/system/cpu/cpu2/topology/physical_package_id
  6.0    2.0    2.0    2.0    0.0   2075 libvirtd        /sys/devices/system/cpu/cpu3/topology/physical_package_id
  4.0    1.0    1.0    2.0    0.0   2075 libvirtd        /sys/devices/system/node
  4.0    1.0    1.0    2.0    0.0   2075 libvirtd        /sys/devices/system/node/node0
  4.0    2.0    2.0    0.0    0.0  15313 gnome-calendar  /usr/share/zoneinfo/Europe/London
  3.0    1.0    1.0    1.0    0.0   2075 libvirtd        /sys/devices/system/cpu/cpu0/topology/core_id
  3.0    1.0    1.0    1.0    0.0   2075 libvirtd        /sys/devices/system/cpu/cpu0/topology/thread_siblings_list
  3.0    1.0    1.0    1.0    0.0   2075 libvirtd        /sys/devices/system/cpu/cpu1/topology/core_id
  3.0    1.0    1.0    1.0    0.0   2075 libvirtd        /sys/devices/system/cpu/cpu1/topology/thread_siblings_list
  3.0    1.0    1.0    1.0    0.0   2075 libvirtd        /sys/devices/system/cpu/cpu2/topology/core_id
  3.0    1.0    1.0    1.0    0.0   2075 libvirtd        /sys/devices/system/cpu/cpu2/topology/thread_siblings_list
  3.0    1.0    1.0    1.0    0.0   2075 libvirtd        /sys/devices/system/cpu/cpu3/topology/core_id
  3.0    1.0    1.0    1.0    0.0   2075 libvirtd        /sys/devices/system/cpu/cpu3/topology/thread_siblings_list
  3.0    1.0    1.0    1.0    0.0   2075 libvirtd        /sys/devices/system/cpu/online
  3.0    1.0    1.0    1.0    0.0   2075 libvirtd        /sys/devices/system/cpu/present
  3.0    1.0    1.0    1.0    0.0   2075 libvirtd        /sys/devices/system/node/node0/meminfo
  2.0    0.0    0.0    0.0    2.0  12174 xchat           /home/cking/.xchat2/xchatlogs/FreeNode-#ubuntu-release.log
  1.0    0.0    0.0    0.0    1.0  12174 xchat           /home/cking/.xchat2/xchatlogs/FreeNode-#ubuntu-desktop.log
  1.0    0.0    0.0    0.0    1.0  12174 xchat           /home/cking/.xchat2/xchatlogs/FreeNode-#ubuntu-devel.log
  1.0    0.0    0.0    0.0    1.0  12174 xchat           /home/cking/.xchat2/xchatlogs/FreeNode-#ubuntu-kernel.log

Mostra i primi 10 file attivi ogni 60 secondi fino all'arresto:

sudo fnotifystat -t 10 60

Mostra l'attività dei file ogni 10 secondi solo 6 volte:

sudo fnotifystat 10 6

Mostra l'attività del file di thunderbird e l'ID processo 1827:

sudo fnotifystat -p thunderbird,1827

Mostra tutti gli eventi di notifica dei file e i primi 20 file di attività attivi in ​​un singolo periodo di 5 minuti:

sudo sudo notifystat -v -d -c 5m 1

Mostra tutti gli eventi di notifica dei file su / sys e / proc e nessuna statistica periodica:

sudo fnotifystat -n -i /sys,/proc

Consultare la pagina man di fnotifystat per maggiori informazioni, è uno strumento abbastanza flessibile.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.