目录

目录

Linux的网页驱动权限问题

目录

Linux 下一些可以用网页驱动的设备在网页中会无法识别, 主要是权限问题, 如下:

❯ ls -l /dev/hidraw*
crw------- 1 root root 243,  0  1月21日 19:54 /dev/hidraw0
crw------- 1 root root 243,  1  1月21日 19:54 /dev/hidraw1
crw------- 1 root root 243, 10  1月21日 19:54 /dev/hidraw10
crw------- 1 root root 243,  2  1月21日 19:54 /dev/hidraw2
crw------- 1 root root 243,  3  1月21日 19:54 /dev/hidraw3
crw------- 1 root root 243,  4  1月21日 20:01 /dev/hidraw4
crw------- 1 root root 243,  5  1月21日 20:01 /dev/hidraw5
crw------- 1 root root 243,  6  1月21日 20:01 /dev/hidraw6
crw------- 1 root root 243,  7  1月21日 19:54 /dev/hidraw7
crw------- 1 root root 243,  8  1月21日 19:54 /dev/hidraw8
crw------- 1 root root 243,  9  1月21日 19:54 /dev/hidraw9
❯ lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 002: ID 0cf2:7750 ENE Technology, Inc. 6K7750
Bus 001 Device 003: ID 373b:1178 PIXART Nano 8K Dongle
Bus 001 Device 004: ID 1a40:0101 Terminus Technology Inc. Hub
Bus 001 Device 006: ID 1532:00b2 Razer USA, Ltd Razer DeathAdder V3
Bus 001 Device 007: ID 2717:5086 Xiaomi Inc. Redmi 电脑音箱
Bus 001 Device 010: ID 373b:111e HFD ATK A87Pro
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub

可以看到所有设备都是无法被普通用户读写的, 普通用户启动的浏览器自然也无法对设备读写, 要解决这个问题可以直接 chmod , 但这种方式重启后就无效了, 并且这种方式也不太规范, 标准的做法是建立 udev 规则来允许用户读写设备.

lsusb 中可以找到 ID 373b:111e , 前半部分是供应商ID idVendor , 后半部分是产品ID idProduct.

编写配置文件 /etc/udev/rules.d/99-atk-device.rules:

# 配置所有 ATK 设备的访问权限
SUBSYSTEM=="hidraw", ATTRS{idVendor}=="373b", MODE="0666", TAG+="uaccess"

也可以单独指定产品ID:

KERNEL=="hidraw*", ATTRS{idVendor}=="373b", ATTRS{idProduct}=="111e", MODE="0666", TAG+="uaccess"
KERNEL=="hidraw*", ATTRS{idVendor}=="373b", ATTRS{idProduct}=="1178", MODE="0666", TAG+="uaccess"

之后重新载入规则:

# 重新加载
sudo udevadm control --reload-rules

# 触发规则
sudo udevadm trigger

之后重新拔插设备, ls -l /dev/hidraw* 检查权限:

❯ ls -l /dev/hidraw*
crw------- 1 root root 243,  0  1月21日 20:07 /dev/hidraw0
crw-rw-rw- 1 root root 243,  1  1月21日 20:07 /dev/hidraw1
crw------- 1 root root 243, 10  1月21日 20:07 /dev/hidraw10
crw-rw-rw- 1 root root 243,  2  1月21日 20:07 /dev/hidraw2
crw-rw-rw- 1 root root 243,  3  1月21日 20:07 /dev/hidraw3
crw-rw-rw- 1 root root 243,  4  1月21日 20:07 /dev/hidraw4
crw-rw-rw- 1 root root 243,  5  1月21日 20:07 /dev/hidraw5
crw-rw-rw- 1 root root 243,  6  1月21日 20:07 /dev/hidraw6
crw------- 1 root root 243,  7  1月21日 20:07 /dev/hidraw7
crw------- 1 root root 243,  8  1月21日 20:07 /dev/hidraw8
crw------- 1 root root 243,  9  1月21日 20:07 /dev/hidraw9

可以看到权限正常, 打开网页驱动就可以正常使用了.