我想在 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
,否则应忽略该设备,例如:product
allow
#!/bin/sh
vendor=$1
product=$2
if [ "$vendor" = "0123" ]; then
if [ "$product" = "4567" ]; then
echo allow
fi
fi
您可能需要研究udevtest
规则以进行实验,并且如上所述,您需要确保您的鼠标、键盘等已列入白名单。您可能希望通过在原始规则SUBSYSTEM=="block",
之前添加来将阻止规则限制为仅针对 USB 块设备。PROGRAM