pondělí 30. července 2012

Fatrace, aneb sledování dění v souborovém systému podruhé

Nedávno jsem psal o linuxovém subsystému pro notifikaci změn v souborovém systému inotify, ale v kernelu je poměrně nově (od jádra 2.6.36) i fanotify, jehož základním posláním je dělat beckend aplikacím pro vyhledávání malware. Fanotify umožňuje svým klientům rozhodovat i o právech přístupu k souborům a tak třeba zkontrolovat soubor, než k němu bude povolen přístup systému.
Nedávno napsal Martin Pitt konzolovou utilitu fatrace pro využití fanotify z shellu a poslal ji i do repozitáře Ubuntu 12.04...

Instalace je klasická:

sudo apt-get install fatrace

Fatrace nemá mnoho funkcí, ale základní dovedností je vypisovat události v celém souborovém systému, přičemž vynechává sytémy virtuální, které nesouvisí s aktivitou záznamových zařízení. Seznam možností najdete v helpu:

fatrace --help

Pokud spustíte fatrace bez parametrů (musíte s právy roota), začne vypisovat všechny události v souborovém systému a struktura jednotlivých řádků je následující:

proces(PID): typ události cesta/k/souboru (pokud není zjištěna, pak číslo inodu)
opera(3562): W /home/gdh/.opera/sessions/oprWfpRkc

Typy událostí zahrnují:

O - Open
R - Read
W - Write
C - Close

přičemž můžete dostat i kombinace jako RO, RCO, CW, CWO . Výstup můžete přepínačem -t obohatit o časové razítko a přepínačem -o jej přesměrovat do souboru.
Přepínačem -s můžete omezit dobu sbírání dat na určitý počet sekund.

sudo fatrace -s 30 -o soubor

Po třiceti sekundách se můžete podívat do souboru s výstupem a dále s ním pracovat.
Přepínačem -p pak můžete vyřadit aktivity konkrétních procesů.

fatrace neumožňuje specifikovat rozsah sledování přesněji, než na konkrétní partition/mount na které se nachází aktuální pracovní adresář (přepínč -c), ale filtrovat výstup můžete externě:

sudo fatrace | egrep ": [^ ]*(O|W|C)[^ ]*/cesta/k/adresáři/souboru"

V tomto příkaze filtruji pouze události obsahující otevření, zápis a zavření souboru, cestu můžete vynechat, případně dopsat cestu ke konkrétnímu adresáři, nebo přímo souboru.

Oproti nástrojům založeným na inotify neumí fatrace nic moc, ale zas můžete najednou obsáhnout celý souborový systém, tedy krom těch virtuálních, a nejste omezeni jen cca osmi tisíci inodů (i inotify toho umí víc, je to o nastavení a paměti).

Odkazy k tématu:
http://www.piware.de/tag/fanotify/
http://lwn.net/Articles/339399/
http://lwn.net/Articles/360955/

2 komentáře:

  1. Tak to je paráda, to jsem neznal. Používal jsem na to různé hacky přes debugfs, příklad

    [code]
    echo 1 > /proc/sys/vm/block_dump
    # měřím, měříš, měříme, pak zrušit pomocí
    echo 0 > /proc/sys/vm/block_dump
    # pak výstup
    f=`mktemp`; echo -ne "open /dev/sda5\nncheck " > $f; (grep 'dirtied inode.*sda' /var/log/syslog | sed 's/^.*dirtied inode //' | cut -d' ' -f1 | sort -u) | tr '\n' ' ' >> $f; echo >> $f; debugfs -f $f
    [/code]

    ale "fat race" (američani?) je mnohem lepší, díky

    arrange

    OdpovědětVymazat
  2. Já se k tomu pojmu poprvé dostal při studiu Nepomuku, kde se k fanotify upínaly jisté naděje ohledně indexace souborového systému. Díky za ukázku, tohle jsem taky neznal.

    Když jsem fatrace zadal do googlu, překvapilo mě, že mi nabídl matrace, do té doby mě nenapadlo to číst česky :)

    OdpovědětVymazat

Zkuste prosím při komentováni používat místo volby Anonymní volbu Název/adresa URL, kde vyplníte nějakou přezdívku, adresu zadávat nemusíte. Vědět, které příspěvky jsou od jednoho člověka, je fajn. Díky.

Pokud by se vám náhodou odeslaný komentář na stránce nezobrazil, vytáhnu ho z koše hned jak si toho všimnu. I Google spam filter se občas sekne.