Пакет Nix требует `sudo` для доступа к USB-устройству - PullRequest
1 голос
/ 27 января 2020

Я написал пакет Nix для установки программного обеспечения libmonome для управления мономом , который подключается к компьютеру через USB. Мой libmonome пакет Nix (это постоянная ссылка на текущую неудовлетворительную версию) не может получить доступ к устройству, если я не использую 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:~]$

Я уже могу использовать свой USB-принтер из NixOS без использования sudo, поэтому я сильно подозреваю, что это возможно. Как я могу изменить пакет так, чтобы запускать его с sudo не было необходимости?

1 Ответ

1 голос
/ 28 января 2020

Вероятно, это вызвано тем, что пользователь работает, поскольку у него нет разрешения на доступ к USB-устройству. Подсказка: failed to open /dev/ttyUSB0 Вы можете подумать, что у вас есть доступ через usb, потому что вы можете использовать принтеры и usb-флешки, но к ним обращаются демоны, которые не запускаются как ваш uid

Чтобы исправить это, получите группу USB-устройство, запустив ls -l /dev/ttyUSB0 (замените его на имя USB, если оно отличается) и добавьте эту группу в список дополнительных групп для пользователя, которому требуется доступ к устройству. Вам нужно будет выйти из системы и войти в нее, чтобы изменения вступили в силу.

Это имеет последствия для безопасности, поскольку теперь можно записать любой USB, но это, безусловно, намного лучше, чем запускать программу через root через судо. Рассмотрите возможность использования setgid на исполняемом файле, который осуществляет доступ, если многим пользователям потребуется запустить его, хотя это имеет другие проблемы с безопасностью.

...