Como evitar o dispositivo HID em certas portas USB?

7

Por motivos de segurança, quero evitar que dispositivos de entrada não possam ser usados em uma determinada porta USB. A funcionalidade de não entrada (por exemplo, armazenamento em massa ou ttyUSB) deve estar disponível nesta porta. Os dispositivos de entrada ainda devem estar funcionando em outras portas USB.

"não pode ser usado" significa que, e. nenhum dispositivo /dev/input/eventX correspondente é criado e estruturas comuns (X11, console linux) não aceitam entrada do dispositivo.

Eu posso identificar a porta USB por regras do udev como

DEVPATH=="/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.7/2-1.7.1/*"

mas não sei como desativá-lo.

Versões antigas do udev suportaram OPTIONS+="ignore_device" , mas essa opção acabou.

Como posso fazer isso?

    
por ensc 03.08.2016 / 14:00

1 resposta

3

Você precisa escrever uma regra para cada um dos tipos possíveis de dispositivos de entrada, por exemplo:

  • ID_INPUT_KEYBOARD
  • ID_INPUT_KEY
  • ID_INPUT_MOUSE
  • ID_INPUT_TOUCHPAD
  • ID_INPUT_TABLET
  • ID_INPUT_JOYSTICK

Na regra, teste que a variável de ambiente com esse nome não é vazia, por exemplo, combine-a com o padrão de glob ?* , que corresponde apenas se houver pelo menos um caractere. Por exemplo:

ENV{ID_INPUT_KEYBOARD}=="?*"

Em cada regra, quando corresponder, defina o atributo authorized do dispositivo como 0, por exemplo:

ATTR{authorized}="0"

É melhor substituir = por := para não poder ser substituído por uma regra posterior. Isto dá uma regra típica de:

ACTION=="add", DEVPATH=="...", ENV{ID_INPUT_KEYBOARD}=="?*", ATTR{authorized}:="0"

Veja esta apresentação da Adrian Crenshaw.

    
por 03.08.2016 / 18:05