
La "vita'' dei file in un sistema GNU/Linux
Il file system è soggetto a mutamenti continui e in costante evoluzione ma il kernel sa sempre cosa accade e agisce di conseguenza. Scopri come
(pagina 10 di 10)
Inotify e la notifica
degli avvisi tramite e-mail
Supponiamo di voler essere avvertiti, tramite e-mail, di ogni accesso
come utente root alla nostra macchina costantemente esposta
su Internet. Di norma ogni qual volta si verifica questo evento
nel file /var/log/auth.log viene scritta una riga del tipo:
May 12 18:26:51 machine-name login[11611]:
ROOT LOGIN on ‘ttyX’
Nella configurazione di base oltre all’indirizzo e-mail a cui vorremmo
essere avvertiti inseriremo il file “/var/log/auth.log” come
file da monitorare e la stringa “ROOT.LOGIN” come stringa da
cercare. Da notare il punto che simboleggia lo spazio bianco:
quest’ultimo carattere è vietato in quanto il programma si avvale
della nota utility grep, occorre quindi inserire tanti punti quanti
sono gli spazi nella stringa in questione.
Terminata la configurazione bisogna avviare il programma logsend
in modalità batch per iniziare l’attività di monitoraggio.
La sintassi del comando è logsend start. Gli accessi come utente
root avvengono anche tramite il comando su (switch user); vanno quindi
intercettati anche questi eventi che a loro volta lasciano
questo tipo di traccia sul file /var/log/auth.log:
May 7 19:11:43 machine-name su[10242]:Successful
su for root by some_user
A questo punto, bisogna riavviare la configurazione di logsend
e cambiare la stringa di ricerca in questo modo: ROOT.
LOGIN\|Successful.su.for.root.by. Da notare come l’operatore
OR è implementato tramite i due caratteri \|.
Infine, non resta che riavviare logsend con logsend restart per
cominciare a utilizzare la nuova configurazione. Per gli amanti
della riga comando va detto che è possibile configurare manualmente
logsend senza utilizzare l’interfaccia testuale. Nel file README
dell’applicazione è, infatti, illustrata la struttura dei file
creati sotto la directory $HOME/.logsend.
Udev: un caso reale di utilizzo
del nuovo sistema di notifica
Per ultimo citiamo un importante fruitore dei servizi di inotify e
cioè il sistema per la gestione dell’hardware udev. Questa piattaforma
rappresenta, praticamente, la nuova infrastruttura, corredata
da una serie di utility, che “gira” in user space e gestisce in
modo dinamico il popolamento della directory /dev affinché solo
le interfacce (i file) dei dispositivi realmente collegati al sistema
siano presenti al suo interno.
Ebbene, udevd, il processo demone (il servizio) di udev, eseguito
al boot della macchina attraverso lo script /etc/init.d/udev, carica
in memoria tutte le regole leggendo i file /etc/udev/rules.d/*.rules.
In caso di successiva modifica delle regole, il kernel utilizza
proprio inotify per comunicare i cambiamenti a udevd e provvede
quindi all’aggiornamento delle proprie regole.
A questo punto è chiaro come siano particolarmente importanti
in questo caso alcune caratteristiche di inotify. Ad esempio, la
comunicazione tramite file descriptor che permette di gestire in
tempo reale gli eventi.
Link utili
Risorse su Internet per approfondire
http://inotify.aiken.cz/?section=
inotify-cxx&page=about=en
http://search.cpan.org/~mlehmann/Linux-
Inotify2-1.1/Inotify2.pm
http://pyinotify.sourceforge.net
http://jnotify.sourceforge.net
http://tab.snarc.org/projects/ocaml_inotify
http://inotify-tools.sourceforge.net
http://inotify.aiken.cz/?section=incron&page=about=en
http://distanz.ch/inotail
http://logsend.sourceforge.net
http://iwatch.sourceforge.net
http://mswatch.sourceforge.net