无需root即可读取/写入串行端口?

无需root即可读取/写入串行端口?

我正在编写一个应用程序来从 Fedora14 中的串行端口读取/写入,当我以 root 身份运行它时,它工作得很好。但是当我以普通用户身份运行它时,我无法获得访问设备(/dev/ttySx)所需的权限。这有点糟糕,因为现在我实际上无法使用 Eclipse 调试这个该死的东西。

我尝试使用 sudo 运行 Eclipse,但它损坏了我的工作区,我什至无法打开该项目。所以我想知道是否可以降低写入 /dev/ttySx 的访问要求,以便任何普通用户都可以访问它。这可能吗?

答案1

访问串口的权限由设备文件的权限决定(例如/dev/ttyS0)。因此,您需要做的就是要么安排该设备归您所有,或者(更好)将您自己置于拥有该设备的组中,或者(如果 Fedora 支持它,我认为它确实如此)安排该设备属于登录控制台的用户。

例如,在我的系统(不是 Fedora)上,由用户和组/dev/ttyS0拥有,因此为了能够访问串行设备,我会将自己添加到组中:rootdialoutdialout

usermod -a -G dialout $USER

答案2

我还需要采取额外的步骤来解决我的问题。我在尝试连接到时遇到了这个问题微:位 在端口上/dev/ttyACM0使用 Debian 10。

ls -ld /dev/ttyACM0

显示:

crw-rw-rw- 1 root dialout 166, 0 Jan  5 16:13 /dev/ttyACM0

这说明了为什么我们可以使用该端口来访问sudo——它由 root 拥有。它还说明了为什么将非 root 用户添加到 dialout 组允许非 root 用户进行访问。我使用以下命令将我的用户帐户添加到 dialout 组/etc/group

sudo usermod -a -G 拨出<用户>

如果没有 root 权限,我仍然无法使用串行端口监视器连接 micro:bit。

micro:bit 安装在/media

ls -ld /媒体/<用户>
drwxr-x---+ 2根根4096 Jan 5 12:44<用户>

这表明 micro:bit 挂载的目录是 root 拥有的。我需要将该目录的所有者和组更改为 <user>:

须藤乔纳<用户>/媒体/<用户>
须藤 chgrp   <用户>/媒体/<用户>

现在我可以使用串行端口监视器连接到 micro:bit,而无需使用 sudo。

答案3

许多发行版使用组成员身份来启用对串行端口的访问。不过,我暂时不知道 Fedora 的详细信息。

答案4

我在使用 VSCode PlatformIO 尝试连接到 ESP32 时遇到了同样的问题。使用

sudo chmod -R 777 /dev -R

解决了这个问题。

相关内容