Sì, puoi scrivere una regola udev.
In /etc/udev/rules.d
creare un file 30-mydevice.rules
(il numero deve essere compreso tra 0 e 99 e decide solo l'ordine di esecuzione dello script; il nome non ha molta importanza, deve solo essere descrittivo; .rules
tuttavia è richiesta l'estensione)
In questo esempio presumo che il tuo dispositivo sia basato su USB e tu sappia che si tratta dell'ID del fornitore e del prodotto (può essere verificato utilizzando lsusb -v
), e stai usando mydevice
gruppo a cui deve appartenere l'utente per utilizzare il dispositivo. Questo dovrebbe essere il contenuto del file in quel caso:
SUBSYSTEM=="usb", SYSFS{idVendor}=="0123", SYSFS{idProduct}=="4567", ACTION=="add", GROUP="mydevice", MODE="0664"
MODE
uguale a 0664 consente la scrittura sul dispositivo da parte del suo proprietario (probabilmente root) e del gruppo definito.
Un modo consiste nell'aggiungere l'utente al "gruppo di dispositivi" corrispondente. Esiste un'intera gamma di gruppi per vari tipi di dispositivi (disco, floppy, tty, video, cdrom, ...) sotto Linux, quindi puoi aggiungere l'utente al gruppo corrispondente in /etc/group
.
Un altro modo è creare uno "pseudo-utente" (ad es. l'utente del gioco). Aggiungi questo utente ai gruppi di dispositivi che dovrebbe avere. Infine, cambi il proprietario di alcuni programmi (come un programma per la scansione di immagini) in questo utente e imposti chmod u+s
. Ciò farà sì che il programma venga eseguito come pseudo-utente, non come utente reale, avendo così accesso ai dispositivi. Puoi usare il gruppo dei programmi per limitare quale utente può eseguire il programma.
Infine, puoi impostare il gruppo di programmi che necessitano di un dispositivo specifico nel gruppo dispositivi e impostare chmod g+s
. Ciò farà sì che il programma venga eseguito con i diritti del gruppo (oltre ai diritti del normale utente che lo esegue), consentendo così un accesso esteso al dispositivo.