Accéder à un périphérique USB sous Linux (libusb-1.0)?

J’écris un petit programme pour communiquer avec un produit USB HID spécifique (identifié par des ID de fournisseur et de produit), en utilisant libusb-1.0 sous Linux. Pour l’instant, je dois exécuter le programme en tant que root car “libusb nécessite un access en écriture aux nœuds de périphérique USB”. Est-il possible de modifier les permissions sur le périphérique dont j’ai besoin pour ne pas avoir à exécuter mon programme en tant que root?

Sur les systèmes Linux modernes, udevd ( man 7 udev ) crée les nœuds de périphérique pour les périphériques USB lorsqu’ils sont branchés. Ajoutez une règle udev correspondant à votre périphérique (par exemple, vous pouvez faire correspondre les ID de fournisseur et de produit USB) et définissez la OWNER / GROUP / MODE du nœud de l’appareil.

La meilleure approche consiste probablement à créer un nouveau groupe pour les utilisateurs qui devraient pouvoir accéder au périphérique, puis définissez-le comme propriétaire du groupe dans la règle udev. Vous devrez peut-être également utiliser MODE pour vous assurer qu’il dispose d’permissions de lecture / écriture de groupe. Par exemple. Votre règle ressemblera probablement à ceci:

 SUBSYSTEMS=="usb", ATTRS{idVendor}=="ffee", ATTRS{idProduct}=="5a5a", MODE="0660", GROUP="foobar"