在 Kubuntu 18.04 中拨出组成员对 /dev/ttyUSB0 的访问被拒绝

Ste*_*err 5 serial-port permission-denied ubuntu-18.04

我正在尝试访问在我的 Kubuntu 18.04 机器上通过 USB 连接到 /dev/ttyUSB0 的 ESP32 微控制器,但出现权限被拒绝的错误:

SerialException: [Errno 13] 无法打开端口 /dev/ttyUSB0: [Errno 13] 权限被拒绝: '/dev/ttyUSB0'

我的用户名位于/etc/group/etc/gshadow中的dialout组中,并且自从添加dialout组成员身份后我已重新启动。

$ sudo grep dialout /etc/group /etc/gshadow
/etc/group:dialout:x:20:steve
/etc/gshadow:dialout:*::steve
$ id -Gn steve
steve adm dialout cdrom sudo dip plugdev lpadmin sambashare vboxusers libvirt libvirt-qemu libvirt-dnsmasq
$ groups steve
steve : steve adm dialout cdrom sudo dip plugdev lpadmin sambashare vboxusers libvirt libvirt-qemu libvirt-dnsmasq
Run Code Online (Sandbox Code Playgroud)

/dev/ttyUSB0 文件的所有权和权限是:

crw-rw---- 1 root dialout 188, 0 Nov 17 22:34 /dev/ttyUSB0
Run Code Online (Sandbox Code Playgroud)

所以我希望拨出组成员身份能够正常工作。

当我将/dev/ttyUSB0的权限更改为“666”,提供全局读/写访问权限时,我可以访问串行端口:

crw-rw-rw- 1 root dialout 188, 0 Nov 17 22:34 /dev/ttyUSB0
Run Code Online (Sandbox Code Playgroud)

虽然可以用作解决方案,但访问应该适用于拨出组成员,但是根据我上面的实验,拨出组成员资格似乎在某种程度上无效。

这个问题与即使在重新启动 Ubuntu 18.04 后,具有拨出组权限的非 root 用户的串行端口权限被拒绝有关,但还有一些额外的要点。

小智 2

这就是我所做的,即使在拔掉并重新连接 Arduino 后它似乎仍然有效。

dev考虑到我需要的 tty 设备可能是到另一个设备的链接,我收集了插入 Arduino 后哪些 tty 被添加到目录中。

就我而言,其中两个:/dev/ttyprintk 和 /dev/ttyACM0,其中第二个是我们期望的 root/dialout 所有权。我将第一个 root/root 更改为root / dialout,事情对我有用。