2010-11-29 14 views
8

Estoy escribiendo un pequeño programa para comunicarme con un producto USB HID específico (identificado por el proveedor y los ID de producto), usando libusb-1.0 en Linux. En este momento, tengo que ejecutar el programa como root porque "libusb requiere acceso de escritura a los nodos del dispositivo USB". ¿Hay alguna manera de cambiar los permisos en el dispositivo que necesito para que no necesite ejecutar mi programa como root?¿Tiene acceso al dispositivo USB en Linux (libusb-1.0)?

Respuesta

10

En los sistemas Linux modernos, udevd (man 7 udev) crea los nodos de dispositivos para dispositivos USB cuando están enchufados. Añadir una regla udev que coincida con su dispositivo (por ejemplo. Usted podría igualar por USB Vendor y los ID de producto), y establece el OWNER/GROUP/MODE del nodo del dispositivo.

El mejor enfoque es, probablemente, crear un nuevo grupo para los usuarios que deberían poder acceder al dispositivo, luego establecerlo como el propietario del grupo en la regla de udev. También puede necesitar usar MODE para asegurarse de que tiene permisos de lectura/escritura de grupo. P.ej. la regla probablemente se verá algo como:

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

Esto no funcionó en mí hasta que he añadido comillas alrededor de "0660" – kynnysmatto

+0

están de acuerdo con el comentario anterior. Se requieren cotizaciones alrededor del "0660" para que esto funcione. Envié una edición a la respuesta original pero, lamentablemente, se rechazó por ser muy leve:/ –

+1

@ phil-lavin: No sé por qué se rechazó su cambio, pero lo he aplicado de todos modos. – caf

Cuestiones relacionadas