Linux 上的 USB 打印机权限
症状: 扫描时能看到打印机,但打印时报访问或权限错误。
原因说明
在 Linux 上,除非有规则另行规定,USB 设备都属于 root,因此以你的身份运行的应用无法打开它。内核自带的打印机驱动也可能已经占用了该设备。
这样做
-
找出打印机的 vendor 和 product id:
lsusb找到你打印机所在的那一行——两个 id 就是
ID后面的两个四位字符值,例如04b8:0e28。 -
创建一个规则文件,把其中的 id 换成你自己的:
sudo tee /etc/udev/rules.d/99-receipt-printer.rules <<'RULE'SUBSYSTEM=="usb", ATTRS{idVendor}=="04b8", ATTRS{idProduct}=="0e28", MODE="0666"RULE -
重新加载规则并让它们生效:
sudo udevadm control --reload-rules && sudo udevadm trigger -
拔下打印机再插回去,然后重启应用。打印一张测试页。
请以你的普通用户身份运行应用,不要用 sudo——一条只对 root 有效的规则就失去意义了。
仍未解决?
在故障提示界面上使用 复制设置报告,把内容连同你打印机对应的那一行 lsusb 输出一起粘贴到你的消息里。