Почему Pyusb / libusb требуют разрешений root (sudo) на Linux?

StackOverflow https://stackoverflow.com/questions/3738173

  •  03-10-2019
  •  | 
  •  

Вопрос

Я играю вокруг с Пищи В последнее время и обнаружил, что он прекрасно работает на Linux (Ubuntu имеет либусб 0,1 и 1,0, а также Openusb.) ... но только если я запускаю программу с привилегиями root (с sudo, конечно).

Может кто-нибудь сказать мне, почему он требует повышенных привилегий и, что более важно, если я могу изменить разрешения как-то, чтобы сделать его работать на обычных учетных записях пользователей?

Это было полезно?

Решение

libusb Позволяет манипулировать произвольными USB-устройствами в произвольных способах. Вы можете отформатировать внешний USB Harddisk, например.

В общем, все прямые аппаратные доступа требуют root привилегии, хотя я думаю, что на самом деле полно root Привилегии не требуются, вы должны быть в порядке с просто CAP_SYS_RAWIO.

Другие советы

Вы можете изменить разрешения вашего узла USB-устройства, создавая правило UDEV. Например, я добавил следующую строку в файл в /etc/udev/rules.d/

SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", MODE="0664", GROUP="usbusers"

Это устанавливает владельца узла устройства в root:usbusers скорее, чем root:root

После добавления себя в usbusers Группа, я могу получить доступ к устройству.

Смотрите ответ, который я здесь дал:
Как я могу общаться с этим устройством, используя Pyusb?

А именно:
Настройте файл правил UDEV для конкретного устройства, который вы хотите получить доступ к нормальным пользователям. Это определит идентификатор поставщика, идентификатор продукта и группу.
Поставщик и идентификатор продукта можно найти с помощью lsusb команда.

1. Создайте файл правил UDEV

ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="171b", ATTRS{idProduct}=="2001", MODE="660", GROUP="plugdev"

Поместите это в файл под названием (например) /lib/udev/rules.d/50-yoursoftwarename.rules (копать в Man Udev для правил именования файлов)
ПРИМЕЧАНИЕ: старая съездная конвенция использовала /etc/udev/rules.d/filename.rules, что изменилось.

2. Добавьте имена пользователей в группу плагинов

adduser username plugdev

3. Заставьте систему UDEV, чтобы увидеть ваши изменения

sudo udevadm control --reload (это минус минус перезагрузка)
sudo udevadm trigger

4. Отключите и загрузите устройство или перезагрузите компьютер

Конечный результат должен заключаться в том, что все члены плагина группы теперь смогут получить доступ к устройству.

Редактировать: Обратите внимание, что на некоторых системах группа plugdev Не может быть группой, которая вам нужна. Это также может быть группой input По моему опыту, в зависимости от того, что вы подключаете.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top