registrare accesso delle memorie usb inserite nel computer.

3 risposte [Ultimo contenuto]
Ritratto di cecchi_linux
cecchi_linux
(Newbie)
Offline
Newbie
Iscritto: 26/10/2011
Messaggi: 4

Salve. Vorrei avere nel mio pc un file di testo(es."accessi_usb") che si aggiorni ogni volta che venga inserita una penna usb, salvando nome, data e ora dell'accesso. é possibile? a me ritornerebbe molto utile.

Debian_version 6.0.3

Ritratto di mcortese
mcortese
(Guru)
Offline
Guru
Iscritto: 27/02/2009
Messaggi: 640

È possibile, ma non banale. Dovresti scrivere una regola per udev che sia richimata se e solo se l'evento riguarda una chiavetta USB. Tale regola dovrebbe quindi iniziare con SUBSYSTEMS=="usb", KERNEL=="sd*", e finire con il comando da eseguire, così:RUN+="/usr/local/bin/accesso_usb.sh $ATTRS{product}".

Questa regola andrebbe poi messa in un file dove udev la possa trovare, tipo /etc/udev/rules.d/80-accesso-usb.rules. Ad esempio:

# Registra ogni chiavetta USB inserita
SUBSYSTEMS=="usb", KERNEL=="sd*", RUN+="/usr/local/bin/accesso_usb.sh $ATTRS{product}"

Ovviamente lo script accesso_usb.sh, che dovrai creare in /usr/local/bin e rendere eseguibile con chmod a+x, non farà altro che appendere data, ora ecc. al file di registrazione, ad esempio:

echo `date +"%F %T"` "$@" >>/var/log/accessi_usb

Prova e fammi sapere.

Ritratto di cecchi_linux
cecchi_linux
(Newbie)
Offline
Newbie
Iscritto: 26/10/2011
Messaggi: 4

Non capisco in che modo l'evento "inserimento di una periferica usb" dovrebbe scatenare le istruzioni descritte nel file "80-accesso-usb.rules".
Ti ho sentito parlare di regole per udev, cercherò di informarmi su questo.

Per il momento ho fatto ciò mi hai indicato ma non ho ottenuto risultati. L' evento non scatena il RUN+="/usr/local/bin/accesso_usb.sh

Debian_version 6.0.3

Ritratto di mcortese
mcortese
(Guru)
Offline
Guru
Iscritto: 27/02/2009
Messaggi: 640

cecchi_linux ha scritto:

Non capisco in che modo l'evento "inserimento di una periferica usb" dovrebbe scatenare le istruzioni descritte nel file "80-accesso-usb.rules".

Perché è quello per cui è progettato udev: reagisce agli eventi generati dal kernel secondo le regole che gli configuri.
Se non funziona, forse serve qualche messa a punto. Prova NAME invece che KERNEL. La sintassi delle regole udev è astrusa e azzeccarne una al volo (senza una macchina Linux su cui provarla) è piuttosto remota.

Per un aiuto in tempo reale, inserisci una chiavetta e scopri quale device file le assegna il kernel (diciamo /dev/sdc). Poi usa

udevadm info --attribute-walk --name=sdc
per vedere tutti i parametri che identificano la tua chiavetta e che puoi usare nella regola. Inoltre aggiungi ACTION=="add" se vuoi registrare solo l'inserimento e non anche la rimozione.

In conclusione, il tuo /etc/udev/rules.d/80-accesso-usb.rules dovrebbe essere simile a questo:

ACTION=="add", SUBSYSTEMS=="usb", NAME=="sd*", RUN+="/usr/local/bin/accesso_usb.sh Chiavetta inserita"

Questa è una traccia, prendila con le dovute cautele. Per il resto... cerca "writing udev rules" su Google e leggiti le man page di udev e udevadm! Smile