erj*_*ang 25 input-devices usb udev
我有一个 USB 秤,一个 USB HID。目前,当它插入时,权限只允许超级用户访问它。如何配置 udev 以允许任何人访问此设备?我有供应商和产品 ID,但我想根据 HID 类型来匹配它。
现在,我很难找到任何适用于此的现有规则(我在/lib/udev/rules.d
和 中搜索了“hidraw” /etc/udev/rules.d
,等等)。
Kee*_*ook 27
通常,这是通过添加到/etc/udev/rules.d
可能以如下50-usb-scale.conf
内容命名的文件来完成的:
SUBSYSTEM=="usb", ATTR{idVendor}=="HEX1", ATTR{idProduct}=="HEX2", MODE="0666"
Run Code Online (Sandbox Code Playgroud)
其中HEX1和HEX2分别替换为供应商和产品 ID。
要匹配的接口类型,而不是,你可以尝试更换ATTR{idVendor}=="HEX1", ATTR{idProduct}=="HEX2"
一个匹配的bInterfaceClass
是03
(HID):
SUBSYSTEM=="usb", ATTR{bInterfaceClass}=="03", MODE="0666"
Run Code Online (Sandbox Code Playgroud)
但请注意,这也会抓住鼠标和键盘。
仅作总结:
您可以过滤:
并使用:
== 比较是否相等。
!= 比较不平等。
= 为键分配一个值。表示列表的键被重置,并且只分配这个单个值。
+= 将值添加到包含条目列表的键。
:= 最后给一个键赋值;禁止任何以后的更改。
您可以在 /dev/... 中为特定设备提供特定的新路径。
例如:
KERNEL=="hiddev*", ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="05df", ATTRS{serial}=="1234567", GROUP="cdrom", OWNER="user28", MODE="0640", SYMLINK+="myhid"
Run Code Online (Sandbox Code Playgroud)
结果是:
您可以通过“/dev/hiddevx”或“/dev/myhid”轻松访问设备,“cdrom”组中的每个用户都可以从设备中读取。所有者“user28”可以读写。
或最简单的:
KERNEL=="hiddev*", ATTRS{idVendor}=="16c0", MODE="0666"
Run Code Online (Sandbox Code Playgroud)
结果:每个用户都可以从供应商 0x16c0 访问每个 hiddevice
详情见:文档
小智 5
如果您需要更改(像我一样)ttyACM0
权限,这是我的设置:
KERNEL=="ttyACM0", MODE="0777"
Run Code Online (Sandbox Code Playgroud)
当我尝试指定供应商和产品 ID 时它失败了。我不知道为什么。
小智 5
Ubuntu 18.04 更新/说明:
Kees Cook 的答案很接近,但需要进行 2 处更改才能在 18.04 中工作(当前版本,也是我测试过的唯一一个版本)。
总线 001 设备 011:ID 04b8:014a 精工爱普生公司
子系统==“usb”,ATTRS {idVendor}==“04b8”,ATTR {idProduct}==“014a”,MODE =“0666”但使用您的 idVendor 和 idProduct 十六进制值。
归档时间: |
|
查看次数: |
77014 次 |
最近记录: |