Oui, vous pouvez écrire une règle udev.
Dans /etc/udev/rules.d
faire un fichier 30-mydevice.rules
(le nombre doit être compris entre 0 et 99 et ne décide que de l'ordre d'exécution du script ; le nom n'a pas vraiment d'importance, il doit juste être descriptif ; .rules
l'extension est requise, cependant)
Dans cet exemple, je suppose que votre appareil est basé sur USB et que vous savez qu'il s'agit de l'identifiant du fournisseur et du produit (peut être vérifié à l'aide de lsusb -v
), et vous utilisez mydevice
groupe auquel votre utilisateur doit appartenir pour utiliser l'appareil. Cela devrait être le contenu du fichier dans ce cas :
SUBSYSTEM=="usb", SYSFS{idVendor}=="0123", SYSFS{idProduct}=="4567", ACTION=="add", GROUP="mydevice", MODE="0664"
MODE
égal à 0664 permet à l'appareil d'être écrit par son propriétaire (probablement root) et le groupe défini.
Une façon consiste à ajouter l'utilisateur au "groupe de périphériques" correspondant. Il existe toute une gamme de groupes pour différents types de périphériques (disque, disquette, tty, vidéo, cdrom, ...) sous Linux, vous pouvez donc ajouter l'utilisateur au groupe correspondant en /etc/group
.
Une autre façon est de créer un "pseudo-utilisateur" (par exemple, l'utilisateur de jeux). Vous ajoutez cet utilisateur aux groupes d'appareils qu'il devrait avoir. Enfin, vous modifiez le propriétaire de certains programmes (comme un programme de numérisation d'images) pour cet utilisateur et définissez chmod u+s
. Cela entraînera l'exécution du programme en tant que pseudo-utilisateur - et non en tant qu'utilisateur réel, ayant ainsi accès aux périphériques. Vous pouvez utiliser le groupe de programmes pour limiter quel utilisateur peut exécuter le programme.
Enfin, vous pouvez définir le groupe de programmes nécessitant un périphérique spécifique sur le groupe de périphériques et définir chmod g+s
. Cela entraînera l'exécution du programme avec les droits du groupe (en plus du droit de l'utilisateur normal qui l'exécute), permettant ainsi un accès étendu à l'appareil.