Isso deve ser possível usando as regras udev
, mas provavelmente não é fácil e exigirá alguma experimentação. É possível acidentalmente fazer coisas ruins, como bloquear o mouse e o teclado, de trabalhar e exigir restauração com um pendrive ao vivo. Eu não testei esses comandos, ignore o emptor.
Crie um novo arquivo com um número de baixa prioridade, por exemplo, /lib/udev/rules.d/20-block-usb.rules
com o conteúdo:
BUS=="usb", PROGRAM="/bin/filter_usb.sh %s{idVendor} %s{idProduct}", RESULT!="allow", OPTIONS+="ignore_device"
Quando um dispositivo USB é inserido, /bin/filter_usb.sh
deve ser chamado com os IDs vendor
e product
do dispositivo como argumentos e, a menos que ocorra allow
, o dispositivo deve ser ignorado, por exemplo:
#!/bin/sh
vendor=$1
product=$2
if [ "$vendor" = "0123" ]; then
if [ "$product" = "4567" ]; then
echo allow
fi
fi
Provavelmente você vai querer analisar udevtest
para experimentar regras e, conforme observado, é necessário certificar-se de que seu mouse, teclado, etc. estejam na lista de permissões. Você pode querer restringir a regra de bloqueio apenas a dispositivos de bloqueio USB adicionando SUBSYSTEM=="block",
antes de PROGRAM
na regra original.