僅在Kubuntu 16.04 64位上進行測試。我有一個應用程序來源不受我控制。它使用了一些libusb的調用,在e.g結束:使用udev-rules不帶sudo的libusb調用
libusb: error [_get_usbfs_fd] libusb couldn't open USB device /dev/bus/usb/001/031: Permission denied
libusb: error [_get_usbfs_fd] libusb requires write access to USB device nodes.
當運行上述應用程序的根,它按預期工作。 當我改變有關文件一樣的權限:
sudo chmod a+w /dev/bus/usb/001/031
則應用程序將使用標準用戶權限運行(直到我斷開/重新連接USB設備)。
現在我正在尋找一種方式,例如每次插入特定的USB設備時自動執行chmod a+w
。 編寫特定的udev規則可能會有這種可能嗎?
也許其他的解決方案要求的libusb沒有root權限?
解決方案:根據David Grayson的回答,我現在在我的規則文件中增加了一行SUBSYSTEM=="usb"
。我的規則文件現在終於看起來像這樣:
SUBSYSTEM=="tty", ATTRS{idVendor}=="1234", ATTRS{idProduct}=="5678", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="1234", ATTRS{idProduct}=="5678", MODE="0666"
我明白了,'MODE ='只是改變了'的/ dev/ttyACM ...'文件的權限,但不是那些條目位於'/ dev /巴士/ USB/...' – Joe
在Unix世界中, 「模式」是通用術語,它指的是文件權限。它不涉及ACM設備。我以前使用libusb成功地使用過這樣的規則。你有沒有嘗試我的規則? –
是的,'SUBSYSTEM ==「usb」'是對'/ dev/bus/usb/...'進行如下'MODE = ...'和'GROUP = ...'影響的技巧。直到之前,我剛剛使用了'SUBSYSTEM ==「tty」'。 – Joe