2010-11-29 23 views
8

Ich schreibe ein kleines Programm für die Kommunikation mit einem bestimmten USB-HID-Produkt (identifiziert durch Hersteller- und Produkt-IDs), mit libusb-1.0 unter Linux. Im Moment muss ich das Programm als root ausführen, weil "libusb Schreibzugriff auf USB-Geräteknoten benötigt". Gibt es eine Möglichkeit, die Berechtigungen auf dem Gerät zu ändern, die ich brauche, damit ich mein Programm nicht als root ausführen muss?Zugriff auf USB-Gerät unter Linux (libusb-1.0)?

Antwort

10

Auf modernen Linux-Systemen erstellt udevd (man 7 udev) die Geräteknoten für USB-Geräte, wenn sie angeschlossen sind. Fügen Sie eine udev-Regel hinzu, die Ihrem Gerät entspricht (z. B. über USB-Anbieter und Produkt-IDs) setzt den OWNER/GROUP/MODE des Geräteknotens.

Der beste Ansatz besteht wahrscheinlich darin, eine neue Gruppe für Benutzer zu erstellen, die auf das Gerät zugreifen dürfen, und dies dann als Gruppenbesitzer in der udev-Regel festzulegen. Sie müssen möglicherweise auch MODE verwenden, um sicherzustellen, dass es über Lese-/Schreibberechtigungen für Gruppen verfügt. Z.B. Ihre Regel wird wahrscheinlich etwas wie folgt aussehen:

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

Diese nicht auf mich arbeiten, bis ich Anführungszeichen um „0660“ – kynnysmatto

+0

Concur mit dem obigen Kommentar hinzugefügt. Zitate um die "0660" erforderlich, damit dies funktioniert. Ich habe eine Änderung an der ursprünglichen Antwort eingereicht, aber leider wurde sie als zu geringfügig abgelehnt:/ –

+1

@ phil-lavin: Ich weiß nicht, warum Ihre Änderung abgelehnt wurde, aber ich habe sie trotzdem angewendet. – caf