我在 Raspbian 上运行了一个 Mono 应用程序,该应用程序通过 libusb 使用某个 USB 设备。如果我正常启动该应用程序,则无法打开该设备。如果我以 root 身份(或通过 sudo)启动该应用程序,则该应用程序会成功打开该设备。
我如何授予应用程序或用户 USB 设备的适当权限,以便应用程序不必以 root 身份启动?
答案1
要授予特定组对 USB 设备的访问权限,您必须udev
在 中添加一条规则/etc/udev/rules.d/
。我添加了一个名为 的文件50-MyDevice.rules
,其中包含以下行:
SUBSYSTEM=="usb",ATTRS{idVendor}=="abcd",ATTRS{idProduct}=="1234",MODE="0660",GROUP="mygroup",SYMLINK+="mydevice%n"
我在哪里更换了值供应商编号和产品编号与USB设备的VID和PID。特别注意每个参数后面的等号数量!
此后我重新启动了 Linux。
现在,每次我插入 USB 设备(或者如果我插入多个相同的设备),我都会得到一个名为/dev/mydevice1
或 的符号链接/dev/mydevice2
。这是一个指向/dev/bus/usb/001/001
(在第二种情况下为 或/dev/bus/usb/001/002
)的符号链接。这些符号链接的目标具有规则文件中定义的正确模式和组权限。