解决Linux中普通用户无权限访问串口设备问题
2018-01-19 10:07
751 查看
有两种方法:
第一种:添加串口设备访问规则
以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
第一种:添加串口设备访问规则
以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
相关文章推荐
- linux下普通用户没有crontab权限问题解决
- Linux添加普通用户并添加sudo权限、修改文件所属者、解决(ubuntu)只有$问题
- XP中如何解决备份文件夹拒绝访问问题(也可解决普通用户访问管理员用户的文件的权限问题)
- 解决linux普通用户使用Wireshark的权限不足问题
- XP中如何解决备份文件夹拒绝访问问题(也可解决普通用户访问管理员用户的文件的权限问题)
- 一步一步SharePoint 2007之二十:解决实现注册用户后,自动具备访问网站的权限的问题(2)——配置Role
- 解决linux下java读取串口之权限问题 No permission to create lock file.
- 一步一步SharePoint 2007之十九:解决实现注册用户后,自动具备访问网站的权限的问题(1)——配置Provider
- 一步一步SharePoint 2007之二十:解决实现注册用户后,自动具备访问网站的权限的问题(2)——配置Role
- 一步一步SharePoint 2007之二十:解决实现注册用户后,自动具备访问网站的权限的问题(2)——配置Role
- Linux 下普通用户默认没有sudo执行权限的解决办法
- 关于“解决实现注册用户后,自动具备访问网站的权限的问题”文章中配置出现找不到角色的问题的解决办法
- 一步一步SharePoint 2007之二十一:解决实现注册用户后,自动具备访问网站的权限的问题(3)——创建用户
- Window访问Linux共享"您可能没有权限使用网络资源"问题解决
- 一步一步SharePoint 2007之二十:解决实现注册用户后,自动具备访问网站的权限的问题(2)——配置Role
- 一步一步SharePoint 2007之十九:解决实现注册用户后,自动具备访问网站的权限的问题(1)——配置Provider
- 15 Linux更改权限解决新建用户不能读写创建文件/文件夹的问题
- 一步一步SharePoint 2007之十九:解决实现注册用户后,自动具备访问网站的权限的问题(1)——配置Provider
- 一步一步SharePoint 2007之二十一:解决实现注册用户后,自动具备访问网站的权限的问题(3)——创建用户
- 一步一步SharePoint 2007之二十一:解决实现注册用户后,自动具备访问网站的权限的问题(3)——创建用户