2010-11-29 190 views
8

我正在编写一个小程序,使用Linux上的libusb-1.0与特定的USB HID产品(由供应商和产品ID标识)进行通信。现在,我必须以root身份运行程序,因为“libusb需要写入USB设备节点”。有没有办法改变我需要的设备上的权限,以便我不需要以root身份运行我的程序?访问Linux上的USB设备(libusb-1.0)?

回答

10

在现代Linux系统上,udevdman 7 udev)会在插入USB设备时创建设备节点。添加与设备匹配的udev规则(例如,您可以通过USB供应商和产品ID进行匹配),以及设置设备节点的OWNER/GROUP/MODE

最好的方法可能是为应该能够访问设备的用户创建一个新组,然后将其设置为udev规则中的组所有者。您可能还需要使用MODE以确保它具有组读取/写入权限。例如。您的规则可能会是这个样子:

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

,直到我说引号“0660” – kynnysmatto 2013-10-04 21:44:59