как отключить USB-устройства на основе идентификатора поставщика в среде Linux?

Я хочу отключить USB-устройства на основе идентификатора поставщика в среде Linux. Я хочу разрешить использование только определенных USB-устройств на основе идентификатора поставщика.

Вы можете сделать правило udev, которое отключает устройства по умолчанию, но позволяет использовать определенные идентификаторы поставщика. Создайте файл /etc/udev/rules.d/01-usblockdown.rules который содержит правило для отключения устройств:

 ACTION=="add", SUBSYSTEMS=="usb", RUN+="/bin/sh -c 'for host in /sys/bus/usb/devices/usb*; do echo 0 > $host/authorized_default; done'" 

А затем правила для включения устройств, которые вы хотите разрешить (вы можете использовать ATTR{idVendor} чтобы получить идентификатор поставщика):

 ACTION=="add", ATTR{idVendor}=="0000" RUN+="/bin/sh -c 'echo 1 >/sys$DEVPATH/authorized'" 

Дополнительную информацию см. В разделе «Блокировка Linux с использованием UDEV» .

(это могло бы быть лучше в качестве комментария, но мне не хватало очков, поэтому он расширил его в ответ)

Я пришел сюда, чтобы узнать, как разрешить использование всех USB-устройств, кроме как отключить определенный идентификатор поставщика и продукта. Как отключить звуковое устройство usb с udev отвечает на пример 0d8c: 000c.

Создайте /etc/udev/rules.d/disable-usb-device.rules :

 ACTION=="add", ATTR{idVendor}=="0d8c", ATTR{idProduct}=="000c", RUN="/bin/sh -c 'echo 0 >/sys/\$devpath/authorized'" 

Там есть несоответствие между ответом и комментарием ниже с RUN= vs. RUN+= , я попробовал первый, и он работал нормально.

Я ожидал, что dmesg или lusb будут сообщаться по-разному, но оба они показывают, что несанкционированное устройство получает нумерацию, как и раньше, но другие процессы / модули, которые были бы запущены автоматически, не будут работать, что было желательным эффектом. cat /sys/bus/usb/devices/1-2.2.1.1.4/authorized ( cat /sys/bus/usb/devices/1-2.2.1.1.4/authorized … например, который можно найти в dmesg) показывает, что 0 был помещен в нужное место.