Linux中USB隐藏的阻塞

Linux中USB隐藏的阻塞,linux,usb,udev,Linux,Usb,Udev,我正在编程一个kioks设备,我想阻止除2种usb以外的所有usb设备。一种是我的触摸屏hid usb,另一种是usb存储设备。实际上我尝试在udev下编写规则。我尝试了以下代码: ACTION=="add", SUBSYSTEM=="usb", DRIVERS=="usb", ATTR{authorized}="0" 但这一个阻止了所有的usb设备。所以我尝试添加另一个规则来取消阻止带有产品和供应商id的特定设备 ACTION=="add", SUBSYSTEM=="usb", DRIVER

我正在编程一个kioks设备,我想阻止除2种usb以外的所有usb设备。一种是我的触摸屏hid usb,另一种是usb存储设备。实际上我尝试在udev下编写规则。我尝试了以下代码:

ACTION=="add", SUBSYSTEM=="usb", DRIVERS=="usb", ATTR{authorized}="0"
但这一个阻止了所有的usb设备。所以我尝试添加另一个规则来取消阻止带有产品和供应商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'"
有关详细信息,请访问以下链接: ,