Freebsd
為什麼在 devfs 規則之前應用 devd 規則?
我的問題
我有以下幾行,
/etc/devd.conf
其中對具有命名供應商和產品 IDusbhidaction
的設備執行。/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 執行。尤其不是計算器或外殼之類的東西。
Devd 在 rc 之前執行,因此在 devfs 之前執行——這是由它的創建者精心選擇的——你可以在這裡看到他的推理:http ://www.usenix.org/events/bsdcon03/tech/full_papers/losh/losh.pdf(第 1 章) 7.2)
Devd 完全在使用者空間中執行,root 權限沒有問題。
除非您選擇 sudo - 這就是您所做的。
使用 devd.conf 在使用者空間中設置一個值。在 devfs 中測試您的標誌。