为什么 devd 规则先于 devfs 规则应用?

为什么 devd 规则先于 devfs 规则应用?

我的问题

我有以下几行,其中对具有指定供应商和产品 ID 的设备执行/etc/devd.confusbhidaction/dev/uhid*

attach 100 {
    match "vendor"  "0x046a";
    match "product" "0x0107";
    action "/usr/local/bin/sudo -u my_user /usr/bin/usbhidaction -f $device-name -p /var/hid_run/usbaction.pid -c /etc/hidactions/cherry_JK0200";
};

以及以下几行/etc/devfs.rules

[tant=10]
add path 'uhid*' mode 0660 group hid

但是当我重新启动时,devd 部分在 devfs 部分之前执行,然后my_user没有权限读取/dev/uhid*.

  • 现在为什么 devfs 比 devd 慢,我能做些什么来解决这个问题?
  • 还有其他方法来配置 devfs 吗?

我为什么这样做

我买了一个新键盘,功能键是一个额外的 USB-hid 设备。现在,我想在按下这些功能键之一时执行小脚本,例如降低音量或静音。

由于脚本来自 my_user,我不希望程序由 root 执行。尤其是计算器或外壳之类的东西。

答案1

Devd 在 rc 之前运行,因此在 devfs 之前运行 - 这是由它的创建者精心选择的 - 你可以在这里看到他的推理:http://www.usenix.org/events/bsdcon03/tech/full_papers/losh/losh.pdf(第 7.2 章)

Devd完全运行在用户空间,不存在root权限的问题。

除非你选择 sudo - 这就是你所做的。

使用 devd.conf 在用户空间设置一个值。在 devfs 中测试您的标志。

相关内容