ubuntu16.04中永久修改 USB 设备权限

来源:互联网 发布:白垩纪往事 知乎 编辑:程序博客网 时间:2024/05/29 13:14


最近使用 USB转串口比较多,但是发展每次使用的时候都需要 手动修改一下 ttyUSB 读写权限,  电脑重启后就无效了



古寻找一种可以永久更改USB权限的办法:


1,查看USB转串口端口号

dmesg | grep ttyS*




2, 查看ttyUSB0的权限

 ls -al /dev/ttyUSB0


当然你还可以手动用chmod命令改变 USB 设备的权限,但是手动的权限改变只是暂时的。USB 设备会在下次重启时恢复它的默认权限。


3,作为一个永久的方式,需要创建一个基于 udev 的 USB 权限规则,它可以根据你的选择分配任何权限模式。

首先,你需要找出 USB 设备的 vendorID 和 productID。使用lsusb命令。

lsusb -vvv



USB0的:



USB1的:



上面lsusb的输出中,找出你的 USB 设备,并找出"idVendor"和"idProduct"字段,创建一个新的udev规




重新加载 udev 规则, 然后重启电脑:

 sudo  udevadm control --reload



附: udev 规则的匹配键 :

 

键                 含义

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

ACTION             事件 (uevent)的行为,例如:add( 添加设备 )、remove(删除设备 )。

KERNEL             在内核里看到的设备名字,比如sd*表示任意SCSI磁盘设备

DEVPATH           内核设备录进,比如/devices/*

SUBSYSTEM         子系统名字,例如:sda的子系统为 block。

BUS               总线的名字,比如IDE,USB

DRIVER             设备驱动的名字,比如ide-cdrom

ID                  独立于内核名字的设备名字

SYSFS{ value}         sysfs属性值,他可以表示任意

ENV{ key}           环境变量,可以表示任意

PROGRAM          可执行的外部程序,如果程序返回0值,该键则认为为真(true)

RESULT             上一个PROGRAM调用返回的标准输出。

NAME              根据这个规则创建的设备文件的文件名。

          注意:仅仅第一行的NAME描述是有效的,后面的均忽略。  

             如果你想使用使用两个以上的名字来访问一个设备的话,可以考虑SYMLINK键。

SYMLINK           为 /dev/下的设备文件产生符号链接。由于 udev只能为某个设备产生一个设备文件,

             所以为了不覆盖系统默认的 udev规则所产生的文件,推荐使用符号链接。

OWNER             设备文件的属组

GROUP             设备文件所在的组。

MODE              设备文件的权限,采用8进制

RUN              为设备而执行的程序列表

LABEL             在配置文件里为内部控制而采用的名字标签(下下面的GOTO服务)

GOTO              跳到匹配的规则(通过LABEL来标识),有点类似程序语言中的GOTO

IMPORT{ type}       导入一个文件或者一个程序执行后而生成的规则集到当前文件

WAIT_FOR_SYSFS   等待一个特定的设备文件的创建。主要是用作时序和依赖问题。

PTIONS             特定的选项:

last_rule       对这类设备终端规则执行;

ignore_device     忽略当前规则;

ignore_remove     忽略接下来的并移走请求。

all_partitions      为所有的磁盘分区创建设备文件。




参考:https://linux.cn/article-6449-1.html?utm_source=weixin

   http://blog.csdn.net/u013776495/article/details/50978993