8
我正在編寫一個小程序,使用Linux上的libusb-1.0與特定的USB HID產品(由供應商和產品ID標識)進行通信。現在,我必須以root身份運行程序,因爲「libusb需要寫入USB設備節點」。有沒有辦法改變我需要的設備上的權限,以便我不需要以root身份運行我的程序?訪問Linux上的USB設備(libusb-1.0)?
我正在編寫一個小程序,使用Linux上的libusb-1.0與特定的USB HID產品(由供應商和產品ID標識)進行通信。現在,我必須以root身份運行程序,因爲「libusb需要寫入USB設備節點」。有沒有辦法改變我需要的設備上的權限,以便我不需要以root身份運行我的程序?訪問Linux上的USB設備(libusb-1.0)?
在現代Linux系統上,udevd
(man 7 udev
)會在插入USB設備時創建設備節點。添加與設備匹配的udev規則(例如,您可以通過USB供應商和產品ID進行匹配),以及設置設備節點的OWNER
/GROUP
/MODE
。
最好的方法可能是爲應該能夠訪問設備的用戶創建一個新組,然後將其設置爲udev規則中的組所有者。您可能還需要使用MODE
以確保它具有組讀取/寫入權限。例如。您的規則可能會是這個樣子:
SUBSYSTEMS=="usb", ATTRS{idVendor}=="ffee", ATTRS{idProduct}=="5a5a", MODE="0660", GROUP="foobar"
,直到我說引號「0660」 – kynnysmatto 2013-10-04 21:44:59