如何编写 udev 规则将特定供应商列入白名单并且不允许其他 USB 驱动器?我把它放进去/etc/udev/rules.d
,还是/lib/udev/rules.d
?我应该运行什么命令来测试规则是否有效?
答案1
您使用该udevadm
实用程序检索设备的相关信息,过滤供应商详细信息应该缩小您的返回范围,例如,
udevadm info -a -n /dev/sdc | grep vendor
然后,您可以使用这些信息构建udev
规则,以根据所安装的设备类型执行或限制操作。
Arch Wiki 有一个很好的编写 udev 规则的入门并且有更完整的描述(尽管其中一些已经过时)编写 udev 规则页面由 Daniel Drake 维护。
/etc/udev/rules.d/
该规则根据以下约定放置并命名:数字-姓名.rules,其中数字表示优先级,名称用于可识别性。看man udev
:
规则文件
udev 规则从位于系统规则目录 /usr/lib/udev/rules.d、易失性运行时目录 /run/udev/rules.d 和本地管理目录 /etc/udev/rules.d 中的文件读取。所有规则文件都按词法顺序集中排序和处理,无论它们所在的目录如何。但是,具有相同文件名的文件会相互替换。
/etc 中的文件具有最高优先级,/run 中的文件优先于 /lib 中的同名文件。如果需要,这可以用于用本地文件覆盖系统提供的规则文件; /etc 中的符号链接与 /lib 中的规则文件同名,指向 /dev/null,完全禁用规则文件。
规则文件必须具有扩展名.rules;其他扩展名将被忽略。
确保安装供应商特定驱动器的规则优先于禁止使用OPTIONS+="ignore_device"
.