问题描述
我们有一个带有 CM3 的定制板,并在集线器上使用 USB 端口 + 以太网部件以及 wifi 芯片。我只想在 USB 端口上允许这两个设备。这是一个无头设备,我只能访问网络。
---方法一---
我已经尝试使用“/etc/modprobe.d/raspi-blacklist.conf”将其他类型的设备列入黑名单,因为这看起来很简单,但似乎从未奏效。即使“usb_storage”也不会禁止存储设备。这似乎不起作用,或者我需要激活更改而不是重新启动。
---方法2--- 所以我尝试了以下一些信息的 udev 规则:
https://wiki.gentoo.org/wiki/Allow_only_known_usb_devices
我使用“udevadm info -a -p /sys/bus/usb/devices/(specific device)”来查找我设备上的信息,并且必须在 Linux Hub 上启用这些设备,我正在使用的集线器,以及另外两个设备。
这里是我的“/etc/udev/rules.d/01-usblockdown.rules”的内容
# Skip not USB
SUBSYstem!="usb",GOTO="usb_end"
# Skip remove actions
ACTION=="remove",GOTO="usb_end"
# Linux Foundation
# USB1 root hub
SUBSYstemS=="usb",ACTION=="add",ATTR{product}=="DWC OTG Controller",\
ATTR{idvendor}=="1d6b",ATTR{idProduct}=="0002",ATTR{bDeviceClass}=="09",ATTR{authorized}="1",GOTO="usb_end"
# 1-1 root hub
SUBSYstemS=="usb",\
ATTRS{idvendor}=="1d6b",ATTR{idProduct}=="9514",GOTO="usb_end"
# Ethernet
SUBSYstemS=="usb",ATTR{bcdDevice}=="0200",\
ATTR{idvendor}=="0424",ATTR{idProduct}=="ec00",GOTO="usb_end"
# wifi
SUBSYstemS=="usb",ATTR{bcdDevice}=="0000",\
ATTR{idvendor}=="0bda",ATTR{idProduct}=="8179",GOTO="usb_end"
# specifically disable storage for testing
SUBSYstemS=="usb",ATTR{product}=="Mass storage",ATTR(authorized)="0",GOTO="usb_end"
# disable all other USB devices
SUBSYstemS=="usb",ATTR{authorized}="0"
LABEL="usb_end"
我用“udevadm test /sys/bus/usb/devices/(specific device)”测试这个,它似乎工作。但是在重新启动时,一切都被授权,即使是专门试图阻止的 USB 存储。如果我在文件前面使用 "SUBSYstemS=="usb",ATTR{authorized}="0"" 则所有内容都会被阻止,我将永久失去与它的网络连接。
---方法3--- 如果我让 systemd/service 在网络设备之后简单地运行“echo 0 >/sys/bus/usb/devices/usb1/authorized_default”,这可以禁止任何新的 USB 设备在启动后插入时运行,但仍允许在网络之前插入的设备。
有没有更简单的方法可以做到这一点,或者我目前可以使用的方法之一缺少什么?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)