Accédez au périphérique USB sur Linux (libusb-1.0)?
-
29-09-2019 - |
Question
Je suis en train d'écrire un petit programme pour communiquer avec un câble USB spécifique produit HID (identifié par ID de fournisseur et du produit), en utilisant libusb-1.0 sur Linux. En ce moment, je dois exécuter le programme en tant que root, car « libusb requiert un accès en écriture aux nœuds de périphériques USB ». Est-il possible de changer les autorisations sur l'appareil que j'ai besoin pour que je ne ai pas besoin d'exécuter mon programme en tant que root?
La solution
Sur les systèmes Linux modernes, udevd
(man 7 udev
) crée les noeuds de périphériques pour les périphériques USB quand ils sont branchés. Ajouter une règle udev qui correspond à votre appareil (par exemple., Vous pouvez correspondre par le fournisseur USB et ID produit), et ensembles le OWNER
/ GROUP
/ MODE
du noeud périphérique.
La meilleure approche est probablement de créer un nouveau groupe pour les utilisateurs qui devraient être en mesure d'accéder à l'appareil, puis définissez que le propriétaire du groupe dans la règle udev. Vous devrez peut-être utiliser MODE
pour vous assurer qu'il dispose des autorisations de lecture / écriture groupe. Par exemple. votre règle sera probablement quelque chose comme:
SUBSYSTEMS=="usb", ATTRS{idVendor}=="ffee", ATTRS{idProduct}=="5a5a", MODE="0660", GROUP="foobar"