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


11

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


Як заблокувати USB / PEN DRIVE у Linux (kali linux) grprajapat.blogspot.in/2014/09/…

У мене є один конкретний постачальник: ідентифікатор пристрою, для якого я хочу відключити cdc_acm. З цього моменту я зробив це окремим питанням .
mirabilos

Відповіді:


10

Ви можете створити правило 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" .


це вищезазначена команда є достатньою, або ми маємо робити будь-який тригер удевадма, щоб досягти цього ефекту.
суббарао

привіт Стефане, ми повинні додати обидва правила, щоб дозволити конкретний мандрівник?
суббарао

@subbarao Так, ви повинні додати обидва правила, перший блокує що-небудь за замовчуванням, другий дозволяє певні пристрої.
DBX12

Це працює, коли ви підключаєте, скажімо, клавіатуру, після завантаження системи. Але якщо клавіатура підключена і ви перезавантажитесь, вона працює при завантаженні ОС резервної копії. Від'єднавши клавіатуру та повторно підключивши її, клавіатура не працює як очікувалося. Чи є якась область нижчого рівня, яку це правило можна запустити до активації завантажувальних пристроїв?
Скотн

3

(це може бути краще як коментар, але мені не вистачає балів, тому розширив це на відповідь)

Я прийшов сюди, шукаючи, як дозволити всі 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 було поставлено в потрібне місце.


Я не знаю, чи були якісь зміни між ними в udev, але в наш час атрибути називаються ATTRS(множинні), а не ATTRтоді, коли я запитую пристрої udevadm.
Батист Мілле-Матіас
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.