我想将Linux上的
/dev/uhid
组设置为uhid
,以便该组的用户无需root权限即可拥有rw访问权限。不幸的是,像 KERNEL=="uhid", GROUP="uinput-users", MODE="0660"
这样的规则不会在启动时应用(udev 甚至不知道设备),但是当我使用 root 访问权限访问 /dev/uhid
一次时。
示例:
sugar@achilles:~$ udevadm info /dev/uhid
Unknown device "/dev/uhid": No such device
sugar@achilles:~$ sudo ./some/random/program/that/accesses/uhid
[sudo] password for sugar:
^C
sugar@achilles:~$ udevadm info /dev/uhid
P: /devices/virtual/misc/uhid
N: uhid
L: 0
E: DEVPATH=/devices/virtual/misc/uhid
E: DEVNAME=/dev/uhid
E: MAJOR=10
E: MINOR=239
E: SUBSYSTEM=misc
sugar@achilles:~$ ls -la /etc/udev/rules.d/90-uinput.rules
-rw-r--r-- 1 root root 42 Aug 12 22:58 /etc/udev/rules.d/90-uinput.rules
sugar@achilles:~$ cat /etc/udev/rules.d/90-uinput.rules
KERNEL=="uhid", GROUP="udev", MODE="0660"
(我尝试了不同的方法,但上面的例子来自这里:https://gist.github.com/StuntsPT/cd3ef67a5ac30e168cb6774ea939f55f)
有人可以告诉我这是为什么以及如何解决它吗?我能想到的唯一解释是
/dev/uhid
是在 udev
“准备好”之前创建的。
问题在于
uhid
模块仅“按需”加载,即第一次访问 /dev/uhid
时。加载模块时应用 udev 规则。通过将 uhid
添加到 /etc/module
以在启动期间加载模块,可以轻松修复此问题。