如何阻止某些 USB 端口上的 HID 设备?

如何阻止某些 USB 端口上的 HID 设备?

出于安全原因,我想防止输入设备无法在某个USB端口上使用。非输入功能(例如大容量存储或ttyUSB)必须在此端口上可用。输入设备必须仍在其他 USB 端口上工作。

“无法使用”意味着例如没有/dev/input/eventX创建相应的设备并且通用框架(X11、linux控制台)不接受来自设备的输入。

我可以通过 udev 规则识别 USB 端口,例如

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

但我不知道如何禁用它。

支持古老的 udev 版本OPTIONS+="ignore_device",但此选项已消失。

我怎样才能做到这一点?

答案1

您需要为每种可能的输入设备类型编写一条规则,即:

  • ID_INPUT_KEYBOARD
  • ID_INPUT_KEY
  • ID_INPUT_MOUSE
  • ID_INPUT_触摸板
  • ID_输入_平板电脑
  • ID_INPUT_JOYSTICK

在规则中,测试具有该名称的环境变量是否为非空,例如将其与?*仅在存在至少一个字符时才匹配的 glob 模式进行匹配。例如:

ENV{ID_INPUT_KEYBOARD}=="?*"

在每条规则中,当匹配时,将设备的authorized属性设置为0,例如:

ATTR{authorized}="0"

最好替换=为,:=这样它就不会被以后的规则覆盖。这给出了一个典型的规则:

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

这个演示文稿作者:阿德里安·克伦肖。

相关内容