Я хочу відключити usb-пристрої на основі ідентифікатора постачальника в середовищі Linux. Я хочу дозволити лише конкретні USB-пристрої на основі ідентифікатора постачальника.
Я хочу відключити 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=
проти RUN+=
, я спробував перший, і він спрацював нормально.
Я очікував, що dmesg або lusb повідомлятимуть по-різному, але вони обидва показують, що авторизований пристрій перераховується так само, як і раніше, але інші процеси / модулі, які автоматично запускалися, здаються, не працюють, що було бажаним ефектом. cat /sys/bus/usb/devices/1-2.2.1.1.4/authorized
(1-2.2 ... наприклад, який можна знайти в dmesg) показує, що 0 було поставлено в потрібне місце.
ATTRS
(множинні), а не ATTR
тоді, коли я запитую пристрої udevadm
.