Freebsd

為什麼在 devfs 規則之前應用 devd 規則?

  • July 4, 2013

我的問題

我有以下幾行,/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 中測試您的標誌。

引用自:https://unix.stackexchange.com/questions/81076