【问题标题】:Blocking USB HID in Linux在 Linux 中阻止 USB HID
【发布时间】:2019-10-04 05:54:34
【问题描述】:

我正在编写一个 kioks 设备,我想阻止所有 USB 设备,除了 2 种 USB。一种是我的触摸屏隐藏 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"

但是这个不工作。

有没有其他方法来做这个操作。

【问题讨论】:

    标签: linux usb udev


    【解决方案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

    【讨论】:

      猜你喜欢
      • 2016-08-02
      • 1970-01-01
      • 1970-01-01
      • 2015-06-04
      • 1970-01-01
      • 2018-04-18
      • 2015-08-28
      • 2012-03-11
      • 1970-01-01
      相关资源
      最近更新 更多