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.
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):
é 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.
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.
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:E, em seguida, regras para ativar os dispositivos que você deseja permitir (você pode usar
ATTR{idVendor}
para obter o ID do fornecedor):Consulte "Bloqueando o Linux usando o UDEV" para obter mais informações.
fonte
(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
: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.fonte
ATTRS
(plural) e nãoATTR
quando eu consulta dispositivosudevadm
.