如何在 Linux 环境中根据供应商 ID 禁用 USB?

如何在 Linux 环境中根据供应商 ID 禁用 USB?

我想在 Linux 环境中根据供应商 ID 禁用 USB。我只想根据供应商 ID 允许特定的 USB。

答案1

这应该可以通过udev规则来实现,但可能并不容易,需要进行一些实验。可能会意外地做一些坏事,例如阻止鼠标和键盘工作,需要使用实时 USB 棒进行恢复。我还没有测试过这些命令,买者自负。

创建一个具有低优先级数的新文件,例如/lib/udev/rules.d/20-block-usb.rules其内容:

BUS=="usb", PROGRAM="/bin/filter_usb.sh %s{idVendor} %s{idProduct}", RESULT!="allow", OPTIONS+="ignore_device"

当插入 USB 设备时,/bin/filter_usb.sh应使用设备的 ID 作为参数进行调用,除非它回显vendor,否则应忽略该设备,例如:productallow

#!/bin/sh
vendor=$1
product=$2

if [ "$vendor" = "0123" ]; then
    if [ "$product" = "4567" ]; then
        echo allow
    fi
fi

您可能需要研究udevtest规则以进行实验,并且如上所述,您需要确保您的鼠标、键盘等已列入白名单。您可能希望通过在原始规则SUBSYSTEM=="block",之前添加来将阻止规则限制为仅针对 USB 块设备。PROGRAM

相关内容