学习分享:Ubuntu 下使用 Qt 打开串口报错 Permission denied

Ubuntu 下使用 Qt 打开串口报错 Permission denied

错误描述

提前声明一下,开发环境是 Ubuntu18.04,用户是非 root 用户。

因项目需求,需要使用到 Qt 收发串口数据,曾经写过一个串口调试助手的程序 通俗易懂玩QT:串口调试助手制作(内附主要源代码) ,这里直接拷贝到 Ubuntu 虚拟机下使用,发现每次打开串口的时候都会发生错误,最开始的时候还不知道发生了什么错误,以为是需要在串口名前面添加 / ,但是后面发现加了 / 后,并没有成功打开串口,所以问题不在于 / ,然后在网上搜索了一下问题,QSerialPort 类有个 errorString() 函数成员, 可以打印开启串口失败的原因,用它打印了一下,加了 / 后的串口错误信息 No such file or directory ,然后把 / 去掉后,再次打印串口错误信息 Permission denied ,于是在网上去搜索了一番,有两种解决方案,一种是将当前的用户添加到串口所在的分组,再一种就是改变 udev 规则,使普通用户可以访问其他用户组下的内容,个人觉得后者安全系数会更高点,下面也是分享的后者。

解决方案

  1. 打开 udev 的配置目录
cd /etc/udev/rules.d
  1. 新建并编辑配置文件70-ttyusb.rules(名称可以自己自行定义,不过后缀必须是 .rulesMODE 的值可以是 0666 ,也可以是0777,个人觉得前者更安全可靠点)
sudo vim 70-ttyusb.rules
> KERNEL=="ttyUSB*", OWNER="root", GROUP="root", MODE="0666"
  1. 修改配置文件70-ttyusb.rules的权限为666(该步骤可省略)
sudo chmod 664 70-ttyusb.rules
  1. 重启udev服务
sudo /etc/init.d/udev restart
< [ ok ] Restarting udev (via systemctl): udev.service.
  1. 重新插拔串口即可(这一步很关键!!!)

学习分享,一起成长!以上为小编的经验分享,若存在不当之处,请批评指正!

### 解决 Ubuntu 上停止 MySQL 容器时出现的权限拒绝问题 当尝试在 Ubuntu 系统上通过 `docker stop` 命令停止 MySQL 容器时遇到权限被拒的情况,通常是因为当前用户缺少访问 Docker Daemon 的必要权限。以下是可能的原因以及解决方案: #### 权限不足的问题分析 Docker 默认只允许 root 用户或者属于 `docker` 组的用户操作容器。如果执行命令的用户未加入到该组,则会触发权限错误。 - 如果运行的是如下命令并收到权限拒绝消息: ```bash docker stop mysql_container_name_or_id ``` 则可以确认这是由于用户的权限设置不当引起的[^1]。 #### 解决方案一:将用户添加至 `docker` 组 可以通过将当前用户添加到 `docker` 组来授予其足够的权限以管理 Docker 资源。具体方法如下: ```bash sudo usermod -aG docker $USER ``` 完成上述更改之后,需重新登录使新配置生效。为了验证是否成功加入了 `docker` 组,可使用以下命令检查: ```bash groups ``` 此时再次尝试停止容器应该不会再有权限问题发生。 #### 解决方案二:临时提升权限 如果不希望永久修改用户权限,在每次调用 Docker CLI 工具前加上 `sudo` 是一种快速解决办法。例如: ```bash sudo docker stop mysql_container_name_or_id ``` 这种方法虽然有效但并不推荐长期采用,因为频繁输入密码可能会降低工作效率。 #### 额外注意事项 有时即使已经正确设置了用户权限仍然无法正常工作,这可能是由其他因素引起,比如文件系统的安全模块 AppArmor 或 SELinux 设置干扰了进程间通信。对于这种情况,请确保这些防护机制没有阻止 Docker 进程连接到它的 Unix Socket 文件 `/var/run/docker.sock`[^2]。 另外需要注意的是,某些特定环境下的服务重启也可能影响到依赖关系链上的组件状态同步情况;如案例提到过 keystone 启动失败关联到了 Apache HTTP Server 的存在与否变化所造成的影响一样,因此建议排查是否存在类似的间接因果关系存在于目标环境中。 ```python import os os.system('id') # 查看当前UID/GID信息用于调试目的 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

混子还在路上

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值