配置udev更改USB HID设备的权限?
我有USB刻度,USB HID。 目前,当插入时,权限仅允许超级用户访问它。 如何配置udev让任何人访问此设备? 我有供应商和产品ID,但我想基于HID类型匹配它。
现在,我很难找到适用于此的任何现有规则(我在/lib/udev/rules.d
和/etc/udev/rules.d
等中使用了“hidraw”)。
通常,这是通过向/etc/udev/rules.d
添加一个名为50-usb-scale.conf
的文件来完成的,其内容如下:
SUBSYSTEM=="usb", ATTR{idVendor}=="HEX1", ATTR{idProduct}=="HEX2", MODE="0666"
其中HEX1和HEX2分别替换为供应商和产品ID。
要改为匹配接口类型,您可以尝试用bInterfaceClass
为03
(HID)的匹配替换ATTR{idVendor}=="HEX1", ATTR{idProduct}=="HEX2"
:
SUBSYSTEM=="usb", ATTR{bInterfaceClass}=="03", MODE="0666"
但要注意,这也将捕捉老鼠和键盘。
如果您需要更改(像我一样) ttyACM0
权限,这是我的设置:
KERNEL=="ttyACM0", MODE="0777"
当我尝试指定供应商和产品ID时,它失败了。 我不知道为什么。
仅供参考:
您可以过滤:
- idVendor
- idProduct
- 串行
并使用:
==比较平等。
!=比较不平等。
=为键分配值。 表示列表的键将被重置,并且仅分配此单个值。
+ =将值添加到包含条目列表的键。
:=最后为一个键赋值; 不允许任何后来的更改。
您可以在/ dev /中为特定设备指定一个特定的新路径…
例:
KERNEL=="hiddev*", ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="05df", ATTRS{serial}=="1234567", GROUP="cdrom", OWNER="user28", MODE="0640", SYMLINK+="myhid"
结果是:
您可以通过’/ dev / hiddevx’或’/ dev / myhid’轻松访问设备,’cdrom’组中的每个用户都可以从设备中读取。 所有者’user28’可以读写。
或最简单:
KERNEL=="hiddev*", ATTRS{idVendor}=="16c0", MODE="0666"
结果:每个用户都可以从供应商0x16c0访问每个hiddevice
有关详细信息,请参阅: 文档
如果是HIDRAW设备,则必须这样做
chmod 0666 /dev/hidrawX
其中X是隐藏设备号,例如hidraw0。 你可以做
ls /dev/hid*
看清单:)或者只是做
sudo chmod 0666 /dev/hidraw*
为所有hidraw设备设置,可能不推荐。
Ubuntu 18.04更新/澄清:
Kees Cook的答案很接近但需要进行2次更改才能在18.04(当前版本中使用,而且只有一次我已经对此进行了测试)。
- 使用lsusb找到你的idVendor和idProduct。
- 这将是“ID”之后的2个hex值,用冒号分隔。 我正在添加扫描仪。 lsusb给了我:
总线001设备011:ID 04b8:014a精工爱普生公司
- 这将是“ID”之后的2个hex值,用冒号分隔。 我正在添加扫描仪。 lsusb给了我:
- 以root 身份将文件添加到/etc/udev/rules.d
- 像50-usb-epsonscanner.rules之类的东西
- 扩展必须是“.rules”
- 在该文件中添加:
SUBSYSTEM ==“usb”,ATTRS {idVendor} ==“04b8”,ATTR {idProduct} ==“014a”,MODE =“0666”
但是使用你的idVendor和idProducthex值。
- 注意它的“ATTRS”不是“ATTR”。
- 重新登录。 无需重启。