devfsルールの前にdevdルールが適用されるのはなぜですか?

devfsルールの前にdevdルールが適用されるのはなぜですか?

私の質問

指定されたベンダーと製品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隠しデバイスです。さて、音量の下げやミュートなどのファンクションキーのいずれかを押すと、小さなスクリプトを実行したいと思います。

スクリプトは 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でフラグをテストします。

関連情報