解决Linux中普通用户无权限访问串口设备问题 您所在的位置:网站首页 linux设置串口权限 解决Linux中普通用户无权限访问串口设备问题

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

2024-03-01 08:30| 来源: 网络整理| 查看: 265

有两种方法:第一种:添加串口设备访问规则以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#!/bin/bash    #################################################################  #  # 添加普通用户访问串口设备的规则,使普通用户可正常访问串口设备  # 注意:此方法会让所有的普通用户都具有访问这些串口设备的权限,  #       存在一定的安全隐患    function add_rules() {          if [ $1 -eq 1 ]; then                  su - root -c 'echo KERNEL==\"ttyUSB[0-9]*\",MODE=\"0666\" >> /etc/udev/rules.d/70-ttyusb.rules'          else                  su - root -c 'echo KERNEL==\"ttyUSB[0-9]*\",MODE=\"0666\" > /etc/udev/rules.d/70-ttyusb.rules'          fi  }    function start_to_add() {          while : ;          do                  add_rules $1                  if [ $? -eq 0 ]; then                          exit                  fi          done  }    function ready_to_add() {          if [ -e /etc/udev/rules.d/70-ttyusb.rules ]; then                  rules=`grep "KERNEL==.*ttyUSB*.*MODE=.*0666" /etc/udev/rules.d/70-ttyusb.rules`                  if [ $rules ]; then                          exit                  fi                  start_to_add 1          else                  start_to_add 2          fi  }  ready_to_add  添加用户组脚本:add_groups.sh#!/bin/bash

#################################################################  #  # 添加uxdb用户至dialout组 #

function add_groups() {         echo "Please enter root password for adding user uxdb to group dialout"         num=3         while (( $num>0 ))         do                 su - root -c "gpasswd --add uxdb dialout"                 if [ $? -eq 0 ]; then                         break                 fi                 let num--         done         echo "Notes:Please logoff and re-login to activate the send phone message function!" }

function ready_to_add() {         dialout_group=`groups uxdb|grep dialout`         if [[ $dialout_group ]]; then                 exit         fi         add_groups } ready_to_add

---------------------

本文来自 password-u 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/u013992330/article/details/79102741?utm_source=copy

地址:https://blog.csdn.net/u013992330/article/details/79102741



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有