我正在编写一个应用程序来从 Fedora14 中的串行端口读取/写入,当我以 root 身份运行它时,它工作得很好。但是当我以普通用户身份运行它时,我无法获得访问设备(/dev/ttySx)所需的权限。这有点糟糕,因为现在我实际上无法使用 Eclipse 调试这个该死的东西。
我尝试使用 sudo 运行 Eclipse,但它损坏了我的工作区,我什至无法打开该项目。所以我想知道是否可以降低写入 /dev/ttySx 的访问要求,以便任何普通用户都可以访问它。这可能吗?
答案1
访问串口的权限由设备文件的权限决定(例如/dev/ttyS0
)。因此,您需要做的就是要么安排该设备归您所有,或者(更好)将您自己置于拥有该设备的组中,或者(如果 Fedora 支持它,我认为它确实如此)安排该设备属于登录控制台的用户。
例如,在我的系统(不是 Fedora)上,由用户和组/dev/ttyS0
拥有,因此为了能够访问串行设备,我会将自己添加到组中:root
dialout
dialout
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
解决了这个问题。