Ubuntu 串口权限问题

很久很久以前,我们在Ubuntu下使用软件(如minicom、screen等)访问串口时,是不需要任何超级权限的(使用minicom时,只有使用-s选项时需要root权限);不知道从哪个版本(12.04?)开始,我们发现原来那招就不好使了;于是很多人开始习惯无论什么时候使用minicom,都使用sudo来运行,更有甚者,直接就用root帐号来登录系统了。

  其实只要很简单的一步,就能够实现非root权限就能访问/dev/ttyS*设备了。

  首先我们来看看为什么普通账户会没有权限访问ttyS设备了:

ls -l /dev/ttyS0
crw-rw---- 1 root dialout 4, 64  8月 30 21:53 /dev/ttyS0

  从上面的输出,我们很容易看出来,ttyS设备的用户主是root,而所属的组是dialout,并且owner和group都是有相同的rw权限的,但others是没有任何权限的。

  使用groups命令,我们就明了了:我们在安装Ubuntu时,安装时使用的账户并不会默认加入dialout组,因此该用户就没有权限可以访问ttyS设备了。

  解决方法也非常简单:

sudo usermod -a -G dialout user_name

  这样,重启系统后,用户“user_name”就会加入dialout组了,之后我们就能自由自在地访问ttyS设备了,enjoy yourself!

### 设置 Ubuntu 系统中的串口权限 为了使用户能够在 Ubuntu 中正常访问串口设备,需要赋予该用户足够的权限。通常情况下,这涉及到将用户添加到特定的用户组以及配置 udev 规则。 #### 将用户加入 `dialout` 组 通过命令行工具可以轻松实现这一点: ```bash sudo usermod -aG dialout 用户名 ``` 这条指令会把指定的用户名添加至 `dialout` 这个特殊用途的群组里[^4]。由于 Linux 下大多数外设默认都归属于这个群组管理之下,因此一旦完成上述操作之后,对应的用户便能够获得对外接硬件(比如 USB 转 TTL/RS232 设备)的操作许可。 #### 创建自定义 Udev 规则文件 对于某些特殊情况下的需求或是希望进一步简化流程,则可以通过创建新的 udev 规则来达到目的。具体做法如下所示: 1. 编辑一个新的规则文件 `/etc/udev/rules.d/99-serial.rules`; ```bash sudo nano /etc/udev/rules.d/99-serial.rules ``` 2. 添加一行或多行类似于下面的内容进去: ``` SUBSYSTEM=="tty", ATTRS{idVendor}=="xxxx", MODE="0666" ``` 此处 `"xxxx"` 应替换为目标设备厂商 ID 的实际数值;而模式 `"0666"` 表明任何人均可读写此端口资源[^1]。 3. 保存更改并退出编辑器后执行刷新动作让新设定生效: ```bash sudo udevadm control --reload-rules && sudo udevadm trigger ``` 以上措施能有效解决大部分关于无法获取足够权限去控制连接于系统的串行接口的问题
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值