在Linux上如何访问USB设备(libusb-1.0)?

9

我正在编写一个小程序,用于与特定的USB HID产品(由供应商和产品ID识别)进行通信,在Linux上使用libusb-1.0。目前,我必须以root身份运行程序,因为“libusb需要对USB设备节点具有写访问权限”。是否有一种方法可以更改我需要的设备的权限,以便我不需要以root身份运行我的程序?

1个回答

12
在现代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
同意上面的评论。在这里需要将“0660”用引号括起来才能正常工作。我已经提交了对原始答案的编辑,但是很遗憾,它被拒绝了,因为修改太小了 :/ - phil-lavin
1
@phil-lavin:我不知道你的更改为什么被拒绝了,但我已经应用了它。 - caf

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接