Nix 包需要 `sudo` 才能访问 USB 设备

Nix package requires `sudo` to access USB device

我写了一个 Nix 包来安装 libmonome software for manipulating a monome, which connects to the computer via USB. My libmonome Nix package(这是对当前不满意版本的永久 link)除非我使用 sudo:

[jeff@jbb-dell:~]$ monomeserial
libmonome: could not open monome device: Permission denied
failed to open /dev/ttyUSB0

[jeff@jbb-dell:~]$ sudo monomeserial
[sudo] password for jeff:
monomeserial version 1.4.2, yay!
initialized device m0000102 (monome 256) at /dev/ttyUSB0, which is 16x16 using proto
 mext
running with prefix /monome
^C

[jeff@jbb-dell:~]$

我已经可以在不使用 sudo 的情况下从 NixOS 使用我的 USB 打印机,所以我强烈怀疑这是可能的。我怎样才能修改包,以便 运行 它与 sudo 是不必要的?

这可能是由于用户认为应用程序 运行ning 没有访问 USB 设备的权限。线索是failed to open /dev/ttyUSB0 你可能认为你有 usb 访问权限,因为你可以使用打印机和 usb 棒,但这些是由不 运行 作为你的 uid

的守护进程访问的

要解决此问题,请通过 运行ning ls -l /dev/ttyUSB0 获取 USB 设备的组(如果不同,请替换为您的 USB 名称)并将此组添加到辅助组列表中需要访问设备的用户。您需要注销并重新登录才能使此修改生效。

这有安全隐患,因为现在可以写入任何 USB,但它肯定比 运行通过 root 通过 sudo 运行程序要好得多。如果许多用户需要 运行,请考虑在执行访问的可执行文件上使用 setgid,尽管这有其他安全问题。