我的问题
我有以下几行,其中对具有指定供应商和产品 ID 的设备执行/etc/devd.conf
。usbhidaction
/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 中测试您的标志。