udev 规则组所有权不起作用

udev 规则组所有权不起作用

我已经为我的 Arduino 添加了 udev 规则,但是符号链接获得的所有权是“root root”而不是“root dialout”。

$ 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

我的用户是“dialout”组的成员,但是当我尝试与设备通信时仍然收到权限被拒绝错误。

当我使用“默认”设备“/etc/ttyACM3”时没有任何问题。

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

我尝试重启 udev 服务并重启电脑。如何修复这个问题?

答案1

我不确定是否有办法使用 udev 为符号链接设置用户和组。我也没有看到。我也怀疑是否需要这样做。

我登录到 tty6 并以 root 身份创建了指向 /dev/tty6 的符号链接 /tmp/tty6。完成后,其用户和组均为 root,但 /dev/tty6 归我所有。

我能够使用

echo hi >/dev/tty6

但也回显 hi >/tmp/tty6

原因是必要的权限由指向的最终 inode 而不是符号链接携带。

如果我是对的,您遇到的问题还有其他原因,尽管我猜测可能是您使用的程序错误地查看了符号链接的权限。

如果是这种情况,作为一种规避措施,也许您可​​以创建自己的链接并使用它,而不是一个 udev 设置。

ln -s /dev/arduino ~/arduino

应该产生一个符号链接到目标/dev/arduino 但使用您的用户和组。

作为测试,以 root 身份,您还可以在 udev 创建的符号链接上自行更改组,并查看在通过 /dev/arduino 时是否有帮助。

相关内容