10
votes

Pourquoi Pyusb / Libusb nécessite-t-il des autorisations root (sudo) sur Linux?

J'ai joué avec pyusb récemment et constaté qu'il fonctionne magnifiquement sur Linux (Ubuntu a < un href = "http://www.libusb.org/" rel = "noreferrer"> libusb 0.1 et 1.0, ainsi que openusb ) ... mais seulement si j'exécute le programme avec des privilèges root (avec sudo , bien sûr).

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


0 commentaires

3 Réponses :


6
votes

libusb vous permet de manipuler des périphériques USB arbitraires de manière arbitraire. Vous pouvez formater un disque dur USB externe, par exemple.

En général, tous les accessoires matériels directs nécessitent des privilèges racine , bien que je suppose que les privilèges root ne sont pas nécessaires, vous devez être correct avec juste cap_sys_rawio .


2 commentaires

Comment définir Cap_sys_rawio avec pyusb?


CAP_SYS_RAWIO peut être trivialement levé pour obtenir une racine complète, de sorte que vous ne gagnez rien en utilisant cette capacité à la place.



14
votes

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

Ceci définit le propriétaire du nœud de périphérique à ROOT: usbusers plutôt que root: root

Après m'ont ajouté au groupe USBUSERS , je peux accéder au périphérique. < / p>


1 commentaires

Cool ... va essayer bientôt!



6
votes

Voir la réponse que j'ai donnée ici:
Comment puis-je communiquer avec cet appareil à l'aide de PYUSB?

nommément:
Configurez un fichier de règles UDEM pour le périphérique spécifique que vous souhaitez que les utilisateurs normaux puissent accéder. Cela définira l'ID du fournisseur, l'ID de produit et un groupe.
Le fournisseur et l'ID de produit peuvent être trouvés à l'aide de la commande lsusb .

1. Créez un fichier de règles UDEM xxx

mettre ceci dans un fichier appelé (par exemple) /lib/udev/roules.d/50-Yoursoftwarename.rules (creuser dans l'homme udev Pour les règles de dénomination de fichier)
Remarque: l'ancienne convention de dénomination utilisée /etc/udev/rules.d/filename.rule, qui a changé.

2. Ajoutez les noms d'utilisateur au groupe PlugDev

adduser nom d'utilisateur plugdev

3. Forcer le système UDev pour voir vos modifications

Sudo Udevadm Control --Reload (CELUS MOINS MOINS RELOAD)
Sudo Udevadm Trigger

4. Débranchez et rebranchez le périphérique ou Redémarrez votre machine

Le résultat final devrait être que tous les membres du groupe PlugDev pourront désormais accéder au périphérique.

EDIT: Notez que sur certains systèmes, le groupe plugdev n'est peut-être pas le groupe dont vous avez besoin. Il peut également s'agir du groupe entrée dans mon expérience, en fonction de ce que vous branchez.


0 commentaires