配置 udev 以更改 USB HID 设备上的权限?

配置 udev 以更改 USB HID 设备上的权限?

我有一个 USB 秤,一个 USB HID。目前,当它插入时,权限仅允许超级用户访问它。我该如何配置 udev 以允许任何人访问此设备?我有供应商和产品 ID,但我想根据 HID 类型进行匹配。

现在,我很难找到任何适用于此的现有规则(我在/lib/udev/rules.d和中搜索了“hidraw”/etc/udev/rules.d等等)。

答案1

通常,这是通过添加/etc/udev/rules.d一个文件来完成的,该文件可能50-usb-scale.conf以如下内容命名:

SUBSYSTEM=="usb", ATTR{idVendor}=="HEX1", ATTR{idProduct}=="HEX2", MODE="0666"

在哪里十六进制1HEX2分别替换为供应商和产品 ID。

为了匹配接口类型,您可以尝试用(HID)ATTR{idVendor}=="HEX1", ATTR{idProduct}=="HEX2"匹配替换:bInterfaceClass03

SUBSYSTEM=="usb", ATTR{bInterfaceClass}=="03", MODE="0666"

但请注意,这也会捕获鼠标和键盘。

答案2

仅作总结:

您可以过滤:

  • 供应商编号
  • 产品编号
  • 串行

并使用:

== 比较是否相等。

!= 比较不相等。

= 为键分配一个值。代表列表的键将被重置,并且只分配这个单一值。

+= 将值添加到包含条目列表的键中。

:= 最终为键分配一个值;不允许任何后续更改。

您可以在 /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

有关详细信息,请参阅:文档

答案3

如果您需要更改(像我一样)ttyACM0权限,这是我的设置:

KERNEL=="ttyACM0", MODE="0777"

当我尝试指定供应商和产品 ID 时失败了。我不确定为什么。

答案4

如果它是 HIDRAW 设备,你必须

chmod 0666 /dev/hidrawX

其中 X 是 hid 设备编号,例如 hidraw0。你可以这样做

ls /dev/hid*

查看列表:)或者直接执行

sudo chmod 0666 /dev/hidraw*

为所有 hidraw 设备进行设置,可能不推荐。

相关内容