是否可以在 Debian (Linux) 系统上限制 USB 端口的权限?
举些例子 :
- 抑制堵塞任何类型材料的能力除外USB 密钥?
- 赋予能力读USB 密钥,但是不写在上面 ?
- 当 USB 闪存盘插入系统时发送警报信号?
答案1
当Linux内核检测到新设备时,它会向乌德夫。 udev 的工作是使新设备可供用户访问。对于许多设备,udev 需要做的就是在/dev
.对于块设备,这允许安装设备。对于串行端口和声音端口等字符设备,这允许专用应用程序使用该设备。对于网络接口,udev 可以设置一个名称。对于键盘,udev 还可以定义额外的扫描码。如果 udev 不创建设备条目,这实际上会导致设备未被使用。
Udev 可以通过以下方式控制规则;默认规则存在于 中/lib/udev/udev.d
,管理员可以通过 中的文件覆盖它们/etc/udev/udev.d
。每个 udev 规则都有以下形式的条件;如果满足所有这些规则,则该规则适用。您可以通过运行或查看适用于设备的条件。VARIABLE==VALUE
udevadm info -a -n /dev/…
udevadm info -a /sys/…
据我所知,没有通用机制可以忽略设备。如果它不是网络接口(不使用 下的设备节点/dev
),您可以通过不授予它任何权限来使其实际上无法使用:
状况,模式=“000”
USB 设备有一个授权机制:如果该authorized
属性设置为0(假),系统将不会访问该设备。根据此规则,除 USB 存储设备外,任何 USB 设备都将不可用。
ACTION=="add", SUSYSTEMS=="usb", DRIVERS!="usb-storage", ATTR{authorized}="0"
也可以启动序列后禁用 USB 设备通过使用以下代码段禁用所有 USB 主机端口/etc/rc.local
:
for x in /sys/bus/usb/devices/usb*; do
echo 0 >"$x/authorized_default"
done
可以通过 udev 规则(或手动)将authorized
属性设置为 1 来启用各个设备。
如果要将存储设备设置为只读,请将其ro
属性设置为 1。
如果要运行命令,请使用RUN
udev 规则中的密钥(请注意,您需要命令的完整路径,并查看手动的以获得可用的转义序列和环境变量)。如果您希望该命令访问 GUI,请参阅
在远程 X 显示器上打开窗口(为什么“无法打开显示器”)?
答案2
您将需要设置一些 udev 规则。
满足您要求的步骤:
- 将允许的设备列入白名单
- 对所有其他人应用限制性权利/所有权
- 配置脚本也可以通过插入规则文件来触发。
这是一个相关线程:https://askubuntu.com/questions/15570/configure-udev-to-change-permissions-on-usb-hid-device
它应该有助于解释并提供进一步的指导。如果您遇到困难,请为您的问题添加下一个障碍。