如何在 Linux 上永久更改 USB 设备权限
Question: I am trying to run
gpsd
on my Linux with a USB GPS receiver. However, I am getting the following errors from gpsd
.
gpsd[377]: gpsd:ERROR: read-only device open failed: Permission denied
gpsd[377]: gpsd:ERROR: /dev/ttyUSB0: device activation failed.
gpsd[377]: gpsd:ERROR: device open failed: Permission denied - retrying read-only
Looks like gpsd
does not have permission to access the USB device (/dev/ttyUSB0
). How can I change its default permission mode permanently on Linux?
当您运行想要读取或写入 USB 设备的进程时,该进程的用户/组必须具有适当的权限才能执行此操作。当然,您可以使用chmod
命令手动更改USB设备的权限,但这种手动权限更改将是暂时的。当您重新启动 Linux 计算机时,USB 设备将恢复为其默认权限模式。

作为永久解决方案,您可以创建基于 udev
的 USB 权限规则,该规则分配您选择的任何自定义权限模式。以下是具体操作方法。
首先,您需要识别 USB 设备的供应商 ID 和产品 ID。为此,请使用 lsusb 命令。
$ lsusb -vvv

从 lsusb
输出中,找到 USB 设备的条目,然后查找 idVendor
和 idProduct
字段。在此示例中,我们有 idVendor
(0x067b
) 和 idProduct
(0x2303
)。
接下来,创建一个新的 udev
规则,如下所示。
$ sudo vi /etc/udev/rules.d/50-myusb.rules
SUBSYSTEMS=="usb", ATTRS{idVendor}=="067b", ATTRS{idProduct}=="2303", GROUP="users", MODE="0666"
将 idVendor
和 idProduct
值替换为您自己的值。 MODE="0666"
表示USB设备的首选权限。
现在重新启动您的计算机或重新加载 udev
规则:
$ sudo udevadm control --reload
然后验证USB设备的权限。
