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サービスとコンピューターの再起動の両方を再起動しようとしました。どうすれば修正できますか?
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を通過するときに役立つかどうかを確認することもできます。