跳到主内容
版本: 1.x

Linux 上的 USB 打印机权限

症状: 扫描时能看到打印机,但打印时报访问或权限错误。

原因说明

在 Linux 上,除非有规则另行规定,USB 设备都属于 root,因此以你的身份运行的应用无法打开它。内核自带的打印机驱动也可能已经占用了该设备。

这样做

  1. 找出打印机的 vendor 和 product id:

    lsusb

    找到你打印机所在的那一行——两个 id 就是 ID 后面的两个四位字符值,例如 04b8:0e28

  2. 创建一个规则文件,把其中的 id 换成你自己的:

    sudo tee /etc/udev/rules.d/99-receipt-printer.rules <<'RULE'
    SUBSYSTEM=="usb", ATTRS{idVendor}=="04b8", ATTRS{idProduct}=="0e28", MODE="0666"
    RULE
  3. 重新加载规则并让它们生效:

    sudo udevadm control --reload-rules && sudo udevadm trigger
  4. 拔下打印机再插回去,然后重启应用。打印一张测试页。

请以你的普通用户身份运行应用,不要用 sudo——一条只对 root 有效的规则就失去意义了。

仍未解决?

在故障提示界面上使用 复制设置报告,把内容连同你打印机对应的那一行 lsusb 输出一起粘贴到你的消息里。