У меня есть USB-весы, USB HID. В настоящее время, когда он подключен, разрешения разрешают только суперпользователю доступ к нему. Как настроить udev, чтобы кто-нибудь мог получить доступ к этому устройству? У меня есть идентификаторы поставщика и продукта, но я бы хотел сопоставить их с типом HID.
Прямо сейчас у меня возникают проблемы с поиском любого существующего правила, которое применимо к этому (среди прочего, я нашел «hidraw» в /lib/udev/rules.d
и /etc/udev/rules.d
).
В случае, если вам необходимо изменить (как и я) разрешения ttyACM0
, это мои настройки:
KERNEL=="ttyACM0", MODE="0777"
Не удалось, когда я попытался указать поставщика и идентификатор продукта. Я не уверен почему.
Просто для краткости:
Вы можете фильтровать по:
== Сравните на равенство.
! = Сравните по неравенству.
= Назначить значение ключу. Ключи, представляющие список, сбрасываются, и назначается только это единственное значение.
+ = Добавить значение к ключу, который содержит список записей.
: = окончательно назначить значение ключу; запретить любые последующие изменения.
Вы можете указать конкретному новому устройству новый путь в / dev / ...
Пример:
KERNEL=="hiddev*", ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="05df", ATTRS{serial}=="1234567", GROUP="cdrom", OWNER="user28", MODE="0640", SYMLINK+="myhid"
Результат:
Вы можете получить доступ к устройство легко через '/ dev / hiddevx' или через '/ dev / myhid', каждый пользователь в группе 'cdrom' может читать данные с устройства. Владелец 'user28' может читать и писать.
или простейший:
KERNEL=="hiddev*", ATTRS{idVendor}=="16c0", MODE="0666"
Результат: Каждый пользователь может получить доступ к каждому устройству hiddevice от поставщика 0x16c0
Подробнее см .: Документы
Если это устройство HIDRAW, вам необходимо
chmod 0666 /dev/hidrawX
где X - номер скрытого устройства, например, hidraw0. Вы можете сделать
ls /dev/hid*
, чтобы увидеть список :) Или просто сделать
sudo chmod 0666 /dev/hidraw*
для настройки для всех устройств hidraw, вероятно, не рекомендуется.
Обычно это делается путем добавления в /etc/udev/rules.d
файла с именем 50-usb-scale.conf
с таким содержанием:
SUBSYSTEM=="usb", ATTR{idVendor}=="HEX1", ATTR{idProduct}=="HEX2", MODE="0666"
Где HEX1 и HEX2 заменяются на поставщика и идентификатор продукта соответственно.
Чтобы сопоставить тип интерфейса вместо этого, вы можете попробовать заменить ATTR{idVendor}=="HEX1", ATTR{idProduct}=="HEX2"
соответствием для bInterfaceClass
, являющегося 03
(HID):
SUBSYSTEM=="usb", ATTR{bInterfaceClass}=="03", MODE="0666"
Но имейте в виду, что поймают мышей и клавиатуры тоже.
Обновление / уточнение в Ubuntu 18.04:
Ответ Киса Кука близок, но требует 18 изменений для работы в 18.04 (текущий выпуск и только один, на котором я это тестировал).
Bus 001 Device 011: ID 04b8:014a Seiko Epson Corp.
SUBSYSTEM=="usb", ATTRS{idVendor}=="04b8", ATTR{idProduct}=="014a", MODE="0666"Но с вашими шестнадцатеричными значениями idVendor и idProduct.