权限组拨出不适用

权限组拨出不适用

我正在使用一个需要通过 USB 串行电缆进行通信的应用程序,使用 /dev/ttyUSB0。

/dev/ttyUSB0 和拥有该进程的用户都在组拨出中,并且端口上的权限设置正确(据我所知)。

但是,只有更改端口权限后,我的应用程序才能运行: sudo chmod 666 /dev/ttyUSB0。我不想每次都手动执行此操作。

该应用程序是 Node-RED。我使用它与三菱 PLC(不是 Arduino)交换数据。getent group dialout确实显示了正确的用户。

我尝试过的其他方法:重启后,通信不会自动恢复。对 PLC 进行电源循环也无济于事。但是,当我重新启动 Node-RED 进程 ( node-red-restart) 时,通信奇迹般地恢复了。我怀疑第一个 node-red 进程可能有不同的所有者,但事实并非如此,我检查了一下。

我不再确定这是一个权限问题,但仍然存在一个问题......

$ /bin/ls -l $( type -p node-red )
lrwxrwxrwx 1 root root 35 aug 17 15:09 /usr/bin/node-red -> ../lib/node_modules/node-red/red.js
$ id
uid=1000(jw) gid=1000(jw) groups=1000(jw),4(adm),20(dialout),24(cdrom),27(sudo),30(dip),46(plugdev),4120(lpadmin),130(lxd),131(sambashare)
$ getent group dialout
dialout:x:20:jw
$ ls -la /dev/ttyUSB0
crw-rw---- 1 root dialout 188, 0 sep 26 15:17 /dev/ttyUSB0
$ ps aux | grep node-red
jw          1383 10.1  6.2 896816 62012 ?        RNsl sep25   6:02 node-red
jw          2154  0.0  0.2   9040  2492 pts/0    S+   00:51   0:00 grep --color=auto node-red

答案1

你正在使用 arduino,或者我假设类似的设备。很可能,你需要你的用户拥有拨出权限,而不是你的设备。使用此命令授予你的用户权限sudo usermod -a -G dialout $USER

你可能还想知道Arduino StackExchange

答案2

由于我不确定这是 Linux 的问题还是 Node-RED 的问题,所以我在他们的论坛上问了同样的问题。如果我在启动时将 node-red 的启动延迟一点,我的问题就解决了。

有关描述,请关注关联

相关内容