Udev: differenze tra le versioni

Vai alla navigazione Vai alla ricerca
m
nessun oggetto della modifica
(completamento guida)
mNessun oggetto della modifica
Riga 3: Riga 3:
|successivo=LVM:_Logical_Volume_Manager
|successivo=LVM:_Logical_Volume_Manager
}}
}}
{{Versioni compatibili|Jessie}}
{{Versioni compatibili|Jessie}}
== Introduzione ==
== Introduzione ==
'''Udev''' si occupa della gestione dinamica dei dispositivi per il kernel Linux ed è una componente importante di Debian, il cui [[pacchetto]] omonimo è quindi installato di default. In particolare gestisce i file di tipo dispositivo nella directory <code>/dev</code>, ossia tutti gli eventi relativi all'aggiunta e rimozione di hardware, incluso l'eventuale caricamento dei relativi firmware, e tutti i cambiamenti di stato di un dispositivo.
'''Udev''' si occupa della gestione dinamica dei dispositivi per il kernel Linux ed è una componente importante di Debian, il cui [[pacchetto]] omonimo è quindi installato di default. In particolare gestisce i file di tipo dispositivo nella directory <code>/dev</code>, ossia tutti gli eventi relativi all'aggiunta e rimozione di hardware, incluso l'eventuale caricamento dei relativi firmware, e tutti i cambiamenti di stato di un dispositivo.
Riga 49: Riga 47:
Tutti questi eventi sono stati generati dal solo inserimento della memoria. L'ultimo riguarda la generazione del file di tipo dispositivo a blocchi <code>/dev/sdb1</code>, corrispondente alla partizione della memoria USB, mentre il penultimo la creazione del file a blocchi <code>/dev/sdb</code>, corrispondente all'intero dispositivo, inclusa la tabella delle partizioni. Si noti che gli eventi sono prodotti dal più generale, riguardante un generico dispositivo USB, al più particolare, riguardante la creazione di un file a blocchi che può essere montato per accedere alla partizione della memoria di massa.
Tutti questi eventi sono stati generati dal solo inserimento della memoria. L'ultimo riguarda la generazione del file di tipo dispositivo a blocchi <code>/dev/sdb1</code>, corrispondente alla partizione della memoria USB, mentre il penultimo la creazione del file a blocchi <code>/dev/sdb</code>, corrispondente all'intero dispositivo, inclusa la tabella delle partizioni. Si noti che gli eventi sono prodotti dal più generale, riguardante un generico dispositivo USB, al più particolare, riguardante la creazione di un file a blocchi che può essere montato per accedere alla partizione della memoria di massa.


Per ottenere maggiori informazioni su ciascun evento, si può utilizzare l'opzione <code>--property</code> (abbreviata: <code>-p</code>).Quindi per esempio:
Per ottenere maggiori informazioni su ciascun evento, si utilizza l'opzione <code>--property</code> (abbreviata: <code>-p</code>).Quindi per esempio:
<pre>
<pre>
$ udevadm monitor -u -p
$ udevadm monitor -u -p
Riga 239: Riga 237:
* condizioni e azioni sono distinguibili soltanto dall'operatore utilizzato e dalle chiavi utilizzabili, e inoltre il valore di una condizione può essere un pattern con <code>*</code> per rappresentare qualsiasi stringa.
* condizioni e azioni sono distinguibili soltanto dall'operatore utilizzato e dalle chiavi utilizzabili, e inoltre il valore di una condizione può essere un pattern con <code>*</code> per rappresentare qualsiasi stringa.


Per una descrizione esaustiva si rimanda al manuale (<code>man udev</code>), di seguito qualche semplice esempio.
Per una descrizione esaustiva si rimanda al manuale (<code>man udev</code>), di seguito sono introdotte soltanto condizioni e azioni principali.


Per le condizioni si considera l'operatore di equivalenza (<code>==</code>) con alcune chiavi comuni (si controlli per un esempio i valori restituiti in precedenza con la chiave USB):
Per le condizioni si considera soltanto l'operatore di equivalenza (<code>==</code>) con alcune chiavi comuni (si controlli per un esempio i valori restituiti in precedenza con la chiave USB):
* <code>ACTION</code> per determinare le azioni a cui la regola va applicata, come osservati monitorando gli eventi;
* <code>ACTION</code> per determinare le azioni a cui la regola va applicata, come osservati monitorando gli eventi;
* <code>KERNEL</code> il nome del file di tipo dispositivo, come sarebbe scelto senza l'attuale regola. Vista la scelta dinamica è in genere consigliabile utilizzare un pattern con <code>*</code> (per esempio in <code>/etc/udev/rules.d/70-persistent-net.rules</code> è utilizzata la condizione <code>KERNEL=="eth*"</code>);
* <code>KERNEL</code> il nome del file di tipo dispositivo, come sarebbe scelto senza l'attuale regola. Vista la scelta dinamica è in genere consigliabile utilizzare un pattern con <code>*</code> (per esempio in <code>/etc/udev/rules.d/70-persistent-net.rules</code> è utilizzata la condizione <code>KERNEL=="eth*"</code>), a meno che si intenda solo cambiare le proprietà di un dispositivo esistente, il cui nome è già determinato staticamente e univoco;
* <code>SUBSYSTEMS</code> per identificare il sottosistema dell'evento, in base ai valori monitorati e alla granularità desiderata;
* <code>SUBSYSTEMS</code> per identificare il sottosistema dell'evento, in base ai valori monitorati e alla granularità desiderata;
* <code>DRIVERS</code> per filtrare gli eventi in base al modulo del kernel utilizzato (per esempio nel caso della memoria USB dell'esempio sarebbe stato ''usb-storage'', ma dipende dalla granularità desiderata dal filtro);
* <code>DRIVERS</code> per filtrare gli eventi in base al modulo del kernel utilizzato (per esempio nel caso della memoria USB dell'esempio sarebbe stato ''usb-storage'', ma dipende dalla granularità desiderata dal filtro);
* <code>ENV{proprietà}</code> per confrontare i valori di una data proprietà, come ottenuti dal monitoraggio di un dato evento.
* <code>ENV{proprietà}</code> per confrontare i valori di una data proprietà, come ottenuti dal monitoraggio di un dato evento.


Per le azioni si considera l'operatore di assegnamento (<code>=</code>) con alcune chiavi comuni:
Per le azioni si considera soltanto l'operatore di assegnamento (<code>=</code>) con alcune chiavi comuni:
* <code>NAME</code> per determinare il nome del file di tipo dispositivo da creare, permesso solo per interfacce di rete;
* <code>NAME</code> per determinare il nome del file di tipo dispositivo da creare, permesso solo per interfacce di rete;
* <code>SYMLINK</code> per creare un link simbolico personalizzato, permesso per tutti i dispositivi, purché il nome non interferisca con quelli riservati dal kernel;
* <code>SYMLINK</code> per creare un link simbolico personalizzato, azione permessa per tutti i dispositivi, purché il nome non interferisca con quelli riservati dal kernel;
* <code>OWNER</code> per determinare l'utente proprietario;
* <code>OWNER</code> per determinare l'utente proprietario;
* <code>GROUP</code> per determinare il gruppo proprietario;
* <code>GROUP</code> per determinare il gruppo proprietario;
Riga 272: Riga 270:
Si noti l'utilizzo di <code>SYMLINK</code> in luogo di <code>NAME</code>, in quanto è possibile soltanto creare un link simbolico personalizzato per file che non sono relativi a interfacce di rete. Si ricorda nuovamente che per effettuare il mount vero e proprio l'uso di '''udev''' è caldamente sconsigliato.
Si noti l'utilizzo di <code>SYMLINK</code> in luogo di <code>NAME</code>, in quanto è possibile soltanto creare un link simbolico personalizzato per file che non sono relativi a interfacce di rete. Si ricorda nuovamente che per effettuare il mount vero e proprio l'uso di '''udev''' è caldamente sconsigliato.


Un simile risultato si può ottenere impostando una regola personalizzata in <code>/etc/fstab</code>, che legga l'[[UUID]] della partizione, riservando una directory allo scopo come punto di mount personalizzato. Lo scopo di questa sezione è solo esemplificare il funzionamento di '''udev''', stesso motivo per cui si sono scritte più condizioni di quelle strettamente necessarie.
Un simile risultato si può ottenere impostando una regola personalizzata in <code>/etc/fstab</code>, che legga l'[[UUID]] della partizione, creando una directory allo scopo da riservarsi come punto di mount personalizzato. Lo scopo di questa sezione comunque è solo di esemplificare il funzionamento di '''udev''' e i risultati ottenibili, stesso motivo per cui si sono scritte più condizioni di quelle strettamente necessarie.


=== Permettere lettura e scrittura su una memoria esterna a tutti gli utenti di un dato gruppo ===
=== Permettere lettura e scrittura su una memoria esterna a tutti gli utenti di un dato gruppo ===
3 581

contributi

Menu di navigazione