Существует большое количество устройств, имеющих разный USB defines class code. Для того чтобы разрешить подключение определенного класса устройств, потребуется применить следующий алгоритм:
1) Создать правило, в котором прописаны разрешенные устройства, а остальные блокируются:
nano /etc/udev/rules.d/99-usb-bInterfaceClass.rules
Содержимое правила на примере классов для token, HID, audio и video устройств:
# Allow all TOKEN devices ATTR{bInterfaceClass}=="0b",ACTION=="add",GOTO="usb_rules_end" # Allow all с ATTR{bInterfaceClass}=="03",ACTION=="add",GOTO="usb_rules_end" # Allow all AUDIO devices ATTR{bInterfaceClass}=="01",ACTION=="add",GOTO="usb_rules_end" # Allow all VIDEO devices ATTR{bInterfaceClass}=="0e",ACTION=="add",GOTO="usb_rules_end" SUBSYSTEM=="usb",ACTION=="add",RUN+="/bin/sh -c '/usr/bin/reject_usb_bInterfaceClass.sh $devpath'" LABEL="usb_rules_end"
2) Создать скрипт, изменяющий атрибут authorized для определенного устройства:
nano /usr/bin/reject_usb_bInterfaceClass.sh
Содержимое скрипта:
#!/bin/bash var=$1 var2=$(echo $1 | sed 's/.*usb[[:digit:]]//' | sed 's/[a-z].*//'| sed 's/[0-9]-[0-9].//') var3=$(echo $var2 | grep '^/[0-9]-[0-9]$') var4=$(echo $var2 | grep '^/[0-9]-[0-9].[0-9]$') if [ -z "$var3" ] && [ -z "$var4" ]; then echo 0 > '/sys/bus/usb/devices'$var2'/authorized' fi
Сделайте скрипт исполняемым:
chmod +x /usr/bin/reject_usb_bInterfaceClass.sh
Перезапустите правила udev:
sudo udevadm control --reload-rules
Есть устройства, которые системой определяются как HUB. В момент редактирования правил и перезагрузки udev на HUB-устройства, которые находятся в системном блоке/кейсе, влияние оказано не будет, так как они не переподключаются. Зато при перезагрузке ОС они заблокируются и в итоге все подключенные к ним устройства ниже по дереву тоже будут заблокированы. Для корректного редактирования устройств подключенных через HUB требуется в правилах разрешить:
DRIVER=="hub",ACTION=="add",GOTO="end_usb_rules"
либо:
ATTR{bInterfaceClass}=="09",ACTION=="add",GOTO="usb_rules_end"
Перезапустить правила:
udevadm control --reload-rules
Дата последнего изменения: 19.09.2024
Если вы нашли ошибку, пожалуйста, выделите текст и нажмите Ctrl+Enter.
Нажимая «Отправить запрос», вы соглашаетесь с условиями обработки персональных данных.
Вы будете получать только актуальную информацию по обновлению безопасности
Подписываясь на уведомления, вы соглашаетесь с условиями обработки персональных данных.
На ваш почтовый адрес отправлено письмо с подтверждением подписки.