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

Я думаю, что причина снова - история. Сначала восьмеричные значения были единственными. Символьные прибыли позже.

Я предпочитаю символьные. Особенно, если Вы действительно хотите изменить существующие значения, не касаясь других частей.

Как chmod -R u=rwx,g-w+X,o=- выполните в этом восьмеричном...

11
31.01.2013, 11:44
3 ответа

Можно заставить 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" для получения дополнительной информации.

10
27.01.2020, 19:58
  • 1
    является вышеупомянутой командой, достаточно, или мы должны сделать любой триггер udevadm для получения эффекта этого. –  subbarao 04.03.2013, 11:24
  • 2
    " расширения фигурной скобки удара привет Stephane, мы должны добавить оба правила позволить определенный pendrive? –  subbarao 05.03.2013, 07:44
  • 3
    @subbarao Да, необходимо добавить оба правила, первые блоки что-либо на значение по умолчанию, второе позволяет определенные устройства. –  DBX12 23.10.2017, 12:15

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

Я пришел сюда в поисках того, как разрешить все 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 (1-2,2 ... Например, которые можно найти в DMESG) показывает, что 0 был помещен в нужное место.

3
27.01.2020, 19:58

У меня это работало на Ubuntu 20.04:

$ cat /etc/udev/rules.d/81-elan-fingerprint.rules
# ID 04f3:0c28 Elan Microelectronics Corp. ELAN:Fingerprint should be disabled
ACTION=="add", ATTR{idVendor}=="04f3", ATTR{idProduct}=="0c28", RUN="/bin/sh -c 'echo 1 >/sys/\$devpath/remove'"

Это делает USB-устройство непригодным для использования, так как оно удаляется, как только подключается, удаление «ATTR{idProduct}=="0c28"» должно сделать то же самое для всех устройств этого поставщика.

3
28.10.2020, 09:39

Теги

Похожие вопросы