Ubuntu下的USB权限问题

在Ubuntu系统中,为了方便开发编程时使用USB设备,可以通过设置udev规则实现权限的永久授予。首先,使用lsusb查看USB设备的位置和ID,然后用udevadm info --attribute-walk --name=/dev/bus/usb/...来检查节点属性。接着,在/etc/udev/rules.d/创建一个规则文件,例如50-usb.rules,添加相应的SUBSYSTEMS, ATTRS, MODE, OWNER和GROUP规则。最后,用udevadm control --reload重载规则,并确认权限已更改为当前用户。这样,即使重启,USB设备仍能保持使用权限。

Ubuntu系统中,如果要使用USB节点,必须获取使用权限,临时获取使用chmod 777 +节点路径即可。

sudo chmod 777 dev/bus/usb/005/002

但是每次关机权限就会恢复,如果是开发编程,使用这个方式获取权限太过复杂。

下面说一种永久获取权限的方式。

首先,在根目录下,使用lsusb指令查看usb的位置

可以看到拔插USB后,多了一个ID:0483:5760,位置在Bus001,Device047。

查看节点权限。

ls -all /dev/bus/usb/001

 

可以看到刚才的节点047,权限为root。

查看节点属性

udevadm info --attribute-walk --name=/dev/bus/usb/001/047

 记住红色方框里的内容,下边需要用到。

添加roals规则。

sudo vim /etc/udev/rules.d/50-usb.rules

SUBSYSTEMS=="usb",ATTRS{idVendor}=="0483",ATTRS{idProduct}=="5760",MODE="0777",OWNER="jc",GROUP="jc"

 其中SUBSYSTEM,ATTRS的属性通过上图写上对应的值,“==”表示匹配关系,匹配该节点信息,MODE赋值权限信息为777,OWNER和GROUP表示用户组,赋值给当前用户jc,这个根据自己用户名修改。

写完后保存退出。

sudo udevadm control --reload

输入指令重新加载,拔插usb设备,再次输入指令查看用户组

ls -all /dev/bus/usb/001

可以看到节点048(拔插导致节点变化,编号+1)的权限为jc,即当前用户组。

这样重启也可以继续保持USB的使用权限了。

<think>好的,我现在需要帮用户解决在Ubuntu上配置USB端口权限问题。首先,我得回顾一下用户提供的引用内容,看看里面有哪些有用的信息。用户引用了5个资料,涉及临时权限修改、端口绑定、权限设置和udev规则配置等。 用户的问题是“如何配置Ubuntu USB端口权限”,需要分步骤回答。根据引用内容,临时修改权限可以使用chmod命令,比如sudo chmod 777 /dev/ttyUSB0,这来自引用[1]和[3]。不过用户可能还需要永久设置权限,这时候就需要用到udev规则,如引用[5]提到的创建usb.rules文件,并添加KERNEL和MODE设置。同时,引用[4]和[5]提到通过udevadm查询设备属性,绑定特定端口,确保设备每次连接时权限正确。 接下来,我需要整理步骤。第一步是临时权限设置,直接使用chmod命令。第二步是永久权限配置,需要创建udev规则文件,确定设备的ID和属性,然后编写规则。这里可能需要指导用户如何找到设备的vendor和product ID,比如使用lsusb或者udevadm命令。引用[3]中的例子是使用/dev/bus/usb/002/008路径,而引用[4]提到用udevadm info来获取详细信息,这可以帮助用户确定设备的唯一标识。 另外,用户可能遇到的问题包括如何确定设备的正确路径或属性,以及udev规则语法是否正确。需要提醒用户替换示例中的ID为自己的设备ID,否则规则不会生效。引用[5]中的步骤详细说明了如何编辑rules文件并重启udev服务,这部分需要准确传达,避免用户遗漏步骤导致配置失败。 最后,生成相关问题时要覆盖临时与永久设置的区别、如何查询设备信息、udev规则的具体语法,以及重置USB端口的方法。引用[2]提到了重置USB端口的方法,可以作为相关问题之一。 检查是否所有步骤都符合用户提供的引用内容,确保没有遗漏关键点,比如udev规则的位置和命令的正确性。确保回答结构清晰,分步骤说明,并引用正确的来源。可能还需要注意用户是否有多个USB设备需要区分,如引用[4]中提到的ttyUSB0和ttyUSB2的情况,这时候可能需要更详细的属性匹配。</think>### 如何在Ubuntu上配置USB端口权限 #### 1. **临时权限设置(重启后失效)** 通过`chmod`命令直接修改设备文件权限。例如,为设备`/dev/ttyUSB0`赋予全部权限: ```bash sudo chmod 777 /dev/ttyUSB0 ``` 此方法适用于临时调试,但设备重新插拔或系统重启后权限会恢复[^1][^3]。 #### 2. **永久权限配置(通过udev规则)** **步骤1:查询设备属性** 使用`udevadm`命令获取设备的唯一标识(如`idVendor`和`idProduct`): ```bash udevadm info --attribute-walk --path=$(udevadm info --query=path --name=/dev/ttyUSB0) ``` 从输出中记录`idVendor`和`idProduct`的值[^4][^5]。 **步骤2:创建udev规则文件** 在`/etc/udev/rules.d/`目录下新建规则文件(如`99-usb-permissions.rules`): ```bash sudo vim /etc/udev/rules.d/99-usb-permissions.rules ``` 添加以下内容(替换`idVendor`和`idProduct`为实际值): ```bash SUBSYSTEM=="tty", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="0666", MODE="0666" ``` 此规则会为指定设备分配读写权限(`0666`)。 **步骤3:重新加载udev规则** 执行以下命令使配置生效: ```bash sudo service udev reload sudo service udev restart ``` 重新插拔USB设备后,权限将永久生效。 #### 3. **绑定USB端口(固定设备名称)** 若需为设备固定名称(如`/dev/dhrobot_base`),在udev规则中添加: ```bash SUBSYSTEM=="tty", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="0666", SYMLINK+="dhrobot_base" ``` 重启udev服务后,设备将映射到指定名称。 ---
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值