Блокировка USB HID в Linux - PullRequest
0 голосов
/ 04 октября 2019

Я программирую устройство kioks и хочу заблокировать все usb-устройства, ожидающие 2 вида usb. Один мой сенсорный экран спрятал usb, а другой - USB-накопители. На самом деле я попытался написать правила под udev.I попыталсяэтот код:

ACTION=="add", SUBSYSTEM=="usb", DRIVERS=="usb", ATTR{authorized}="0"

Но этот блокирует все USB-устройства. Поэтому я попытался добавить другое правило, чтобы разблокировать определенное устройство с идентификатором продукта и поставщика.

ACTION=="add", SUBSYSTEM=="usb", DRIVERS=="usb", ATTR{idVendor}=="0eef", ATTR{idProduct}=="0005", ATTR{authorized}="1"

, но этотне работает.

есть ли другой способ выполнить эту операцию.

1 Ответ

0 голосов
/ 08 ноября 2019

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

#By default, disable all usb devices (including hubs)
ACTION=="add", SUBSYSTEMS=="usb", RUN+="/bin/sh -c 'for host in /sys/bus/usb/devices/usb*; do echo 0 > $host/authorized_default; done'"

#Enable hub devices
ACTION=="add", ATTR{bDeviceClass}=="09", RUN+="/bin/sh -c 'echo 1 >/sys$DEVPATH/authorized'"

#Enable desired USB devices by setting PID/VID
ACTION=="add", ATTR{idVendor}=="045e", ATTR{idProduct}=="07f8", RUN+="/bin/sh -c 'echo 1 >/sys$DEVPATH/authorized'"
ACTION=="add", ATTR{idVendor}=="045e", ATTR{idProduct}=="0797", RUN+="/bin/sh -c 'echo 1 >/sys$DEVPATH/authorized'"

Для получения дополнительной информации перейдите по следующим ссылкам: Настройка разрешена с помощью сценария , Настройка разрешена с использованием ATTR

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...