Desejo desativar os dispositivos USB com base na identificação do fornecedor no ambiente Linux. Desejo permitir apenas dispositivos USB específicos, com base na identificação do fornecedor.
Desejo desativar os dispositivos USB com base na identificação do fornecedor no ambiente Linux. Desejo permitir apenas dispositivos USB específicos, com base na identificação do fornecedor.
Respostas:
Você pode criar uma regra do udev que desabilite os dispositivos por padrão, mas habilita alguns por ID do fornecedor. Crie um arquivo /etc/udev/rules.d/01-usblockdown.rules
que contenha uma regra para desativar dispositivos:
ACTION=="add", SUBSYSTEMS=="usb", RUN+="/bin/sh -c 'for host in /sys/bus/usb/devices/usb*; do echo 0 > $host/authorized_default; done'"
E, em seguida, regras para ativar os dispositivos que você deseja permitir (você pode usar ATTR{idVendor}
para obter o ID do fornecedor):
ACTION=="add", ATTR{idVendor}=="0000" RUN+="/bin/sh -c 'echo 1 >/sys$DEVPATH/authorized'"
Consulte "Bloqueando o Linux usando o UDEV" para obter mais informações.
(isso pode ter sido melhor como comentário, mas não tenho os pontos, então expandi-o para uma resposta)
Eu vim aqui procurando como permitir todos os dispositivos USB, exceto desativar um específico por fornecedor e ID do produto. Como desativar um dispositivo de som USB com o udev, ele responde pelo exemplo 0d8c: 000c.
Criar /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'"
Há uma discrepância entre a resposta e um comentário abaixo com RUN=
vs. RUN+=
, tentei a primeira e funcionou bem.
Eu esperava que o dmesg ou o lusb relatassem de maneira diferente, mas ambos mostram o dispositivo não autorizado sendo enumerado como antes, mas outros processos / módulos que teriam iniciado automaticamente parecem não estar em execução, o que foi o efeito desejado. cat /sys/bus/usb/devices/1-2.2.1.1.4/authorized
(o 1-2.2 ... por exemplo, que pode ser encontrado no dmesg) mostra que o 0 foi colocado no lugar certo.
ATTRS
(plural) e não ATTR
quando eu consulta dispositivos udevadm
.