Question

Je suis en train de jouer autour avec pyusb ces derniers temps, et a constaté que cela fonctionne très bien sous Linux (Ubuntu a < a href = "http://www.libusb.org/" rel = "noreferrer"> libusb 0,1 et 1,0, ainsi que OpenUSB ) ... mais seulement si je lance le programme avec les privilèges root (avec sudo, bien sûr).

Quelqu'un peut-il me dire pourquoi il requiert des privilèges élevés et, plus important encore, si je peux modifier les autorisations en quelque sorte pour le faire fonctionner pour les comptes utilisateur normal?

Était-ce utile?

La solution

libusb vous permet de manipuler les périphériques USB arbitraires de façon arbitraire. Vous pouvez formater un disque dur externe USB, par exemple.

En général, tout accès direct au matériel nécessite des privilèges root, même si je suppose que les privilèges root en fait plein ne sont pas nécessaires, vous devriez être bien avec juste CAP_SYS_RAWIO.

Autres conseils

Vous pouvez modifier les autorisations de votre noeud périphérique USB en créant une règle udev. par exemple. J'ai ajouté la ligne suivante dans un fichier /etc/udev/rules.d/

SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", MODE="0664", GROUP="usbusers"

Ceci définit le propriétaire du noeud périphérique à root:usbusers plutôt que root:root

Après moi d'ajouter au groupe usbusers, je peux accéder au périphérique.

Voir la réponse que j'ai donné ici:
Comment puis-je comuniquer avec cet appareil en utilisant pyusb?

A savoir:
Mettre en place un fichier de règles udev pour le périphérique spécifique que vous souhaitez que les utilisateurs pour qu'ils puissent être en mesure d'accéder. Cela définira l'ID du fournisseur, l'identifiant du produit et un groupe.
On peut trouver les fournisseurs de et l'identifiant de produit en utilisant la commande lsusb.

1. Créer un fichier de règles udev

ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="171b", ATTRS{idProduct}=="2001", MODE="660", GROUP="plugdev"

Mettre cela dans un fichier appelé (par exemple) /lib/udev/rules.d/50-YourSoftwareName.rules (fouiller dans udev homme pour les règles de nommage de fichiers)
NOTE: L'ancienne convention de dénomination utilisée /etc/udev/rules.d/filename.rules, qui a changé.

2. ajouter les noms d'utilisateur au groupe plugdev

adduser username plugdev

3.  forcer le système udev pour voir vos modifications

sudo udevadm control --reload (qui est moins reload moins)
sudo udevadm trigger

4. débrancher et rebrancher le dispositif ou redémarrer votre machine

Le résultat final devrait être que tous les membres du groupe plugdev seront désormais en mesure d'accéder au périphérique.

EDIT: Notez que le plugdev du groupe ne peut pas être sur certains systèmes, le groupe que vous avez besoin. Il peut également être le input du groupe dans mon expérience, en fonction de ce que vous brancher.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top