【问题标题】:UDEV Rule to exclude "bus/usb/001/*" folderUDEV 规则排除 \"bus/usb/001/*\" 文件夹
【发布时间】:2022-09-30 20:31:35
【问题描述】:

我正在尝试创建简单的 udev 规则来阻止所有设备,但在特定端口(RASPBERRY PI 4)上连接的大容量存储除外。

我想出了以下规则:

允许 USB 驱动器:

KERNEL==\"sd?\", ENV{DEVTYPE}==\"disk\", ATTRS{devpath}==\"1.3\", SYMLINK+=\"USBInputDISK\", ATTR{authorized}:=\"1\"
KERNEL==\"sd??\", ENV{DEVTYPE}==\"partition\", ATTRS{devpath}==\"1.3\", SYMLINK+=\"USBInputPARTITION\", ATTR{authorized}:=\"1\"

阻止其他一切:

ENV{DEVTYPE}!=\"disk\", ENV{DEVTYPE}!=\"partition\", ATTRS{devpath}==\"1.3\", SYMLINK+=\"BadUSBInput\", ATTR{authorized}:=\"0\"

唯一的问题是阻止规则接管了允许规则,因为它将阻止 \"/dev/bus/usb/001/***\"。因此,我试图避免这种情况。我的想法是在 N: 标志的 udev 规则中添加一个测试。 这是因为当我运行时:

udevadm info -q all /dev/bus/usb/001/016

我收到一条声明N: bus/usb/001/016

因此,我想在 udev 规则中添加一条声明 \"N:\"!=\"/bus/usb/001/*\"。 我不知道如何,也无法在网上找到答案。

我用ENV{DEVNAME}!=\"/dev/bus/*\" 尝试了一些东西,由于某种原因它不起作用。

任何想法 ? 谢谢 !

    标签: linux bash kernel usb udev


    【解决方案1】:

    知道了。

    ATTRS{devpath}=="1.3", KERNEL=="hid*", RUN+="/bin/bash -c 'echo 0 > /sys/bus/usb/devices/1-1.3/authorized'"
    

    这是一种在允许大容量存储 USB 拇指驱动器的同时阻止 COM 端口上的输入(键盘、鼠标、橡皮鸭)的工作方式。

    【讨论】:

      猜你喜欢
      • 2011-07-03
      • 1970-01-01
      • 1970-01-01
      • 2019-10-03
      • 1970-01-01
      • 1970-01-01
      • 2015-03-21
      • 1970-01-01
      • 2017-01-11
      相关资源
      最近更新 更多