como desativar dispositivos USB com base na identificação do fornecedor no ambiente Linux?


11

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.


Como bloquear USB / PEN DRIVE no Linux (kali linux) grprajapat.blogspot.in/2014/09/…

Eu tenho um fornecedor específico: ID do dispositivo para o qual desejo desativar o cdc_acm. Eu já fiz isso em uma pergunta separada .
mirabilos

Respostas:


10

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.rulesque 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.


é o comando acima é suficiente ou temos que executar qualquer gatilho udevadm para obter efeito disso.
precisa saber é o seguinte

oi Stephane, temos que adicionar as duas regras para permitir pendrive específico?
precisa saber é o seguinte

@subbarao Sim, você precisa adicionar as duas regras, o primeiro bloqueia qualquer coisa por padrão, o segundo permite determinados dispositivos.
DBX12

3

(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.


Eu não sei se houve algumas alterações no udev, mas hoje em dia os atributos são nomeados ATTRS(plural) e não ATTRquando eu consulta dispositivos udevadm.
Baptiste Mille-Mathias
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.