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.
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.
Respuestas:
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.rules
que 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.
(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.
ATTRS
(plural) y no ATTR
cuando consulto dispositivos udevadm
.