# Linux 上的 USB 打印机权限

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

## 原因说明[​](#why-it-happens "直接链接到 原因说明")

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

## 这样做[​](#do-this "直接链接到 这样做")

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 有效的规则就失去意义了。

## 仍未解决？[​](#still-stuck "直接链接到 仍未解决？")

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

[Discord Community](https://wcpos.com/discord)<support@wcpos.com>
