限制 Debian 上的 USB 访问

限制 Debian 上的 USB 访问

是否可以在 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==VALUEudevadm 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。

如果要运行命令,请使用RUNudev 规则中的密钥(请注意,您需要命令的完整路径,并查看手动的以获得可用的转义序列和环境变量)。如果您希望该命令访问 GUI,请参阅 在远程 X 显示器上打开窗口(为什么“无法打开显示器”)?

答案2

您将需要设置一些 udev 规则。

满足您要求的步骤:

  1. 将允许的设备列入白名单
  2. 对所有其他人应用限制性权利/所有权
  3. 配置脚本也可以通过插入规则文件来触发。

这是一个相关线程:https://askubuntu.com/questions/15570/configure-udev-to-change-permissions-on-usb-hid-device

它应该有助于解释并提供进一步的指导。如果您遇到困难,请为您的问题添加下一个障碍。

相关内容