在 Linux 中阻止 USB HID

Blocking USB HID in Linux

我正在为 kioks 设备编程,我想阻止所有 usb 设备,除了 2 种 usb.One 是我的触摸屏隐藏 usb,另一种是 usb 存储 devices.Actually 我试过写udev.I 下的规则尝试了此代码:

ACTION=="add", SUBSYSTEM=="usb", DRIVERS=="usb", ATTR{authorized}="0"

但是这个阻止了所有 USB devices.So 我尝试添加另一条规则来取消阻止具有产品和供应商 ID 的特定设备。

ACTION=="add", SUBSYSTEM=="usb", DRIVERS=="usb", ATTR{idVendor}=="0eef", ATTR{idProduct}=="0005", ATTR{authorized}="1"

但是这个不行。

还有其他方法可以完成这个操作吗

您的方法的问题在于它也禁用了 USB 集线器设备,并且通常集线器在内部是 USB 主机控制器的一部分。因此,在禁用所有 USB 设备后,您需要明确启用任何集线器设备,然后再启用所需的 USB 设备。可以这样做:

#By default, disable all usb devices (including hubs)
ACTION=="add", SUBSYSTEMS=="usb", RUN+="/bin/sh -c 'for host in /sys/bus/usb/devices/usb*; do echo 0 > $host/authorized_default; done'"

#Enable hub devices
ACTION=="add", ATTR{bDeviceClass}=="09", RUN+="/bin/sh -c 'echo 1 >/sys$DEVPATH/authorized'"

#Enable desired USB devices by setting PID/VID
ACTION=="add", ATTR{idVendor}=="045e", ATTR{idProduct}=="07f8", RUN+="/bin/sh -c 'echo 1 >/sys$DEVPATH/authorized'"
ACTION=="add", ATTR{idVendor}=="045e", ATTR{idProduct}=="0797", RUN+="/bin/sh -c 'echo 1 >/sys$DEVPATH/authorized'"

有关详细信息,请点击以下链接: Setting authorized by running script, Setting authorized using ATTR