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 8 di 10)
Eventi particolari
Non classificabili nelle altre categorie
NOME
EFFETTO
IN_ONLYDIR
Il monitoraggio avviene solo se il path èuna directory
IN_DONT_FOLLOW
Monitoraggio del link simbolico e non del file o della directory a cui il link punta
IN_MASK_ADD
Aggiunta di altre condizioni al monitoraggio in essere
IN_ISDIR
Evento che interessa una directory
IN_ISONESHOT
Rimuove il monitoraggio dopo il primo evento
L’applicazione Logsend
Per questa applicazione non esiste il corrispondente pacchetto
precompilato, quindi, anche gli utenti Debian GNU/Linux devono
installare il programma tramite compilazione del codice
sorgente. Occorre scaricare il file compresso da http://logsend.
sourceforge.net/download.shtml e seguire le istruzioni dettagliate
riportate in http://logsend.sourceforge.net/README.shtml. Bisogna
solo dedicare particolare attenzione ai requisiti necessari. Nel
sistema devono essere disponibili: l’interprete Bash; il pacchetto
Dialog, un MTA (Message Trasport Agent) come Postfix, Qmail,
Sendmail o Exim e il programma Mailx per l’invio delle e-mail,il
comando awk e ancora il pacchetto inotify-tools trattato in precedenza.
In breve, supponendo di aver scaricato il package sotto
/tmp e utilizzando l’utente root per installarlo bisogna eseguire i
comandi seguenti:
cd /usr/local
tar -xvzf /tmp/logsend-1.0.tar.gz
cd logsend-1.0
make install
Ogni utente può quindi configurare logsend per monitorare adeguatamente
i file che desidera tramite il comando logsend config,
il quale attiva una pratica interfaccia a console. Tramite la configurazione
di base si possono impostare i file da monitorare, le
stringhe da cercare e l’indirizzo e-mail a cui spedire gli allarmi.
Come backend per logsend scegliamo inotify
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 approfondirehttp://inotify.aiken.cz/?section=inotify-cxx&page=about=enhttp://search.cpan.org/~mlehmann/Linux-Inotify2-1.1/Inotify2.pmhttp://pyinotify.sourceforge.nethttp://jnotify.sourceforge.nethttp://tab.snarc.org/projects/ocaml_inotifyhttp://inotify-tools.sourceforge.nethttp://inotify.aiken.cz/?section=incron&page=about=enhttp://distanz.ch/inotailhttp://logsend.sourceforge.nethttp://iwatch.sourceforge.nethttp://mswatch.sourceforge.net