打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
解决Linux中普通用户无权限访问串口设备问题

有两种方法:

第一种:添加串口设备访问规则

以root身份执行:

vim /etc/udev/rules.d/70-ttyusb.rules

内容为:

KERNEL=="ttyUSB[0-9]*",MODE="0666"

注意:内容里边的双引号不能丢,否则不会生效

此方法有两个弊端:

1.该方法会让所有的普通用户都具有访问这些串口设备的权限,存在一定的安全隐患

2.加入此规则后,必须拔掉设备重新插入,此规则才可生效

第二种:将目标用户添加至dialout用户组

因tty设备隶属于dialout用户组,所以将用户添加至dialout用户组,该用户就会具备访问tty等串口设备的权限

例如我的用户是 uxdb

则使用如下命令即可:

gpasswd --add uxdb dialout

添加完之后可以用如下命令来查看是否添加成功

groups uxdb

如果用完之后想删除该权限,则使用如下命令,从dialout用户组删除uxdb用户即可

gpasswd --del uxdb dialout

注意:添加和删除用户组都必须以root身份来执行,另外此方法也有一个弊端,就是添加或删除完成后必须logoff(注销),re-login(重新登录)才可生效

以root身份执行一条命令:

su root -c "gpasswd --add uxdb dialout"

添加串口设备访问规则脚本:

add_udev_rules.sh

  1. #!/bin/bash
  2. #################################################################
  3. #
  4. # 添加普通用户访问串口设备的规则,使普通用户可正常访问串口设备
  5. # 注意:此方法会让所有的普通用户都具有访问这些串口设备的权限,
  6. # 存在一定的安全隐患
  7. function add_rules() {
  8. if [ $1 -eq 1 ]; then
  9. su - root -c 'echo KERNEL==\"ttyUSB[0-9]*\",MODE=\"0666\" >> /etc/udev/rules.d/70-ttyusb.rules'
  10. else
  11. su - root -c 'echo KERNEL==\"ttyUSB[0-9]*\",MODE=\"0666\" > /etc/udev/rules.d/70-ttyusb.rules'
  12. fi
  13. }
  14. function start_to_add() {
  15. while : ;
  16. do
  17. add_rules $1
  18. if [ $? -eq 0 ]; then
  19. exit
  20. fi
  21. done
  22. }
  23. function ready_to_add() {
  24. if [ -e /etc/udev/rules.d/70-ttyusb.rules ]; then
  25. rules=`grep "KERNEL==.*ttyUSB*.*MODE=.*0666" /etc/udev/rules.d/70-ttyusb.rules`
  26. if [ $rules ]; then
  27. exit
  28. fi
  29. start_to_add 1
  30. else
  31. start_to_add 2
  32. fi
  33. }
  34. ready_to_add
添加用户组脚本:

add_groups.sh

  1. #!/bin/bash
  2. #################################################################
  3. #
  4. # 添加uxdb用户至dialout组
  5. #
  6. function add_groups() {
  7. echo "Please enter root password for adding user uxdb to group dialout"
  8. num=3
  9. while (( $num>0 ))
  10. do
  11. su - root -c "gpasswd --add uxdb dialout"
  12. if [ $? -eq 0 ]; then
  13. break
  14. fi
  15. let num--
  16. done
  17. echo "Notes:Please logoff and re-login to activate the send phone message function!"
  18. }
  19. function ready_to_add() {
  20. dialout_group=`groups uxdb|grep dialout`
  21. if [[ $dialout_group ]]; then
  22. exit
  23. fi
  24. add_groups
  25. }
  26. ready_to_add
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
linux下非root用户获得/dev/ttyUSB0的读写权限
wsl系列内容:wsl2添加usb串口驱动后如何免root使用串口_wsl 串口
Linux授权普通用户读写 ttyUSB (USB2Serial)
乐鑫esp8266学习rtos3.0笔记:体验下官方推荐的在Linux搭建 ESP8266
Linux (Ubuntu16) 下, 串口权限问题
Linux 下PL2302 USB转串口的使用
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服