web-dev-qa-db-ja.com

udevルールグループの所有権が機能しない

Arduinoにudevルールを追加しましたが、シンボリックリンクの所有権は「ルートダイヤルアウト」ではなく「ルートルート」になります。

$ cat /etc/udev/rules.d/47-Arduino.rules 
SUBSYSTEM=="usb", ATTR{idVendor}=="2341", ATTR{idProduct}=="0001", MODE="0666", SYMLINK+="arduino", GROUP="dialout"

$ ls -la /dev/ar*
lrwxrwxrwx 1 root root 15 sep  8 11:02 /dev/arduino -> bus/usb/003/007

$ ls -la /dev/bus/usb/003/007 
crw-rw-r-- 1 root dialout 189, 262 sep  8 11:12 /dev/bus/usb/003/007

私のユーザーは「ダイヤルアウト」グループのメンバーですが、デバイスと通信しようとすると許可拒否エラーが表示されます。

「デフォルト」デバイス「/ etc/ttyACM3」を使用している場合、問題はありません。

$ ls -la /dev/ttyACM3 
crw-rw---- 1 root dialout 166, 3 sep  8 11:12 /dev/ttyACM3

私は、udevサービスとコンピューターの再起動の両方を再起動しようとしました。どうすれば修正できますか?

3
tirithen

Udevでシンボリックリンクのユーザーとグループを設定する方法があるかどうかはわかりません。どちらも見当たりません。私は、それが必要かどうかも疑っています。

Tty6にサインオンし、rootとして/ dev/tty6へのシンボリックリンク/ tmp/tty6を作成しました。ユーザーとグループは両方ともrootでしたが、/ dev/tty6は私が所有していました。

使用できました

echo hi >/dev/tty6

また、エコーhi>/tmp/tty6

その理由は、必要な許可が、シンボリックリンクではなく、ポイントされている最後のiノードによって保持されるためです。

私が正しい場合、あなたが抱えている問題には別の理由がありますが、使用しているプログラムが間違ってシンボリックリンクのアクセス権を調べている可能性があります。

その場合、回避策として、おそらく独自のリンクを作成し、1つのudevセットの代わりにそれを使用できます。

ln -s /dev/arduino ~/arduino

/ dev/arduinoのtargetへのシンボリックリンクを作成しますが、ユーザーとグループが必要です。

テストとして、rootとして、udevが作成したシンボリックリンクのグループを自分で変更し、/ dev/arduinoを通過するときに役立つかどうかを確認することもできます。

3
John S Gruber