¿Cómo deshabilitar los dispositivos USB basados ​​en la identificación del proveedor en el entorno Linux?


11

Quiero deshabilitar los dispositivos usb basados ​​en la identificación del proveedor en el entorno Linux. Quiero permitir solo dispositivos USB específicos, según la identificación del proveedor.


Cómo bloquear USB / PEN DRIVE en Linux (kali linux) grprajapat.blogspot.in/2014/09/…

Tengo un proveedor específico: ID de dispositivo para el que quiero deshabilitar cdc_acm. Desde entonces he hecho esto en una pregunta separada .
mirabilos

Respuestas:


10

Puede crear una regla udev que deshabilite los dispositivos de manera predeterminada, pero habilita algunos por ID de proveedor. Cree un archivo /etc/udev/rules.d/01-usblockdown.rulesque contenga una regla para deshabilitar dispositivos:

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

Y luego las reglas para habilitar los dispositivos que desea permitir (puede usar ATTR{idVendor}para obtener la ID del proveedor):

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

Consulte "Bloqueo de Linux con UDEV" para obtener más información.


es suficiente el comando anterior o tenemos que hacer cualquier disparador udevadm para obtener el efecto de esto.
Subbarao

hola Stephane, ¿tenemos que agregar ambas reglas para permitir pendrive específico?
Subbarao

@subbarao Sí, debe agregar ambas reglas, la primera bloquea cualquier cosa por defecto, la segunda permite ciertos dispositivos.
DBX12

Esto funciona cuando se conecta, digamos un teclado, una vez que se inicia el sistema. Pero si el teclado está conectado y usted reinicia, el teclado funciona cuando el sistema operativo se reinicia. Al desconectar el teclado y volver a enchufarlo, el teclado no funciona como se esperaba. ¿Hay algún área de nivel más bajo que esta regla se pueda ejecutar antes de activar los dispositivos de arranque?
ScottN

3

(Esto podría haber sido mejor como comentario, pero me faltan los puntos, así que lo expandí en una respuesta)

Vine aquí buscando cómo permitir todos los dispositivos usb, excepto deshabilitar uno específico por proveedor e identificación del producto. Cómo deshabilitar un dispositivo de sonido usb con udev lo responde para el ejemplo 0d8c: 000c.

Crear /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'"

Hay una discrepancia entre la respuesta y un comentario a continuación con RUN=vs. RUN+=, probé la primera y funcionó bien.

Esperaba que dmesg o lusb informaran de manera diferente, pero ambos muestran que el dispositivo no autorizado se enumeró como antes, pero parece que otros procesos / módulos que se habrían lanzado automáticamente no se están ejecutando, que fue el efecto deseado. cat /sys/bus/usb/devices/1-2.2.1.1.4/authorized(el 1-2.2 ... por ejemplo, que se puede encontrar en dmesg) muestra que el 0 se colocó en el lugar correcto.


No sé si hubo algunos cambios intermedios en udev, pero hoy en día los atributos se nombran ATTRS(plural) y no ATTRcuando consulto dispositivos udevadm.
Baptiste Mille-Mathias
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.