【发布时间】: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