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