如何防止安装所有 USB 大容量存储设备?

Posted

技术标签:

【中文标题】如何防止安装所有 USB 大容量存储设备?【英文标题】:How can I prevent all USB mass storages from mounting? 【发布时间】:2012-09-01 02:44:46 【问题描述】:

我想防止使用udev 规则安装各种 USB 大容量存储。

我已经可以使用以下规则检测到连接到我的系统的所有 USB 大容量存储设备:

SUBSYSTEMS=="scsi", SUBSYSTEM=="block" KERNEL=="sd[b-h]1"

但是我怎样才能防止它们挂载呢?

我知道我必须将其相关USB设备的授权文件设置为零!但是我怎样才能找到 USB 设备路径呢? $DEVPATH 为我提供了存储设备块的路径,例如 sdb1!

我有一个应用程序应该允许某些 USB 大容量存储设备。所以屏蔽USB大容量存储设备的方法不应该是静态的!

【问题讨论】:

这个编程有什么关系? 【参考方案1】:

以下规则禁止自动挂载除第一个分区以外的所有分区:

# Rule: Only mount first partition found on /dev/sd* (USB) devices.
ACTION=="add|change", SUBSYSTEM=="block", KERNEL=="sd*[2-9]", ENVUDISKS_PRESENTATION_NOPOLICY="1"

原因:在有多个分区的 U 盘中,我只想自动挂载第一个。如果需要,我手动安装其他的。

您应该能够用 KERNEL=="sd*" 替换分区匹配器,以获得:

# Rule: Do not automount any partitions found on /dev/sd* (USB) devices.
ACTION=="add|change", SUBSYSTEM=="block", KERNEL=="sd*", ENVUDISKS_PRESENTATION_NOPOLICY="1"

这会阻止自动挂载,然后您可以手动管理。

我只在 Ubuntu 10.10 上测试过这个

【讨论】:

【参考方案2】:

最简单的方法是将usb-storage 内核模块列入黑名单。但是,这仅在它被编译为模块而不是直接编译到内核中时才有效。您可以通过modprobe -n usb-storage.ko 进行检查,或者在 /lib/modules/$(uname -r)/kernel/drivers/usb/storage/ 中查找它

如果它被编译为一个模块,您可以通过在 /etc/modprobe.d/blacklist(.conf) 中添加一个条目来将其列入黑名单。对于 Debian,请参阅this guide

【讨论】:

我应该在这个文件中添加什么样的条目?能给我举个例子吗? 这个方法太静态了,我需要管理被阻塞的usb存储!我有一个应用程序可以允许某些 USB 存储器挂载!我认为唯一的方法是使用udev!你知道吗? 你需要编辑你的问题,因为你的问题是I want to prevent every kind of usb mass storage from mounting,而不是I have an application which can give permission to some usb storage to mount

以上是关于如何防止安装所有 USB 大容量存储设备?的主要内容,如果未能解决你的问题,请参考以下文章

启用 AppSand 盒时如何从 USB 大容量存储设备读取

如何在Mac中停用USB外接储存设备

控制器没有足够的带宽供usb大容量存储设备

win10突然不能使用usb大容量存储设备(移动硬盘)的解决方法

使用 STM32 USB 设备库的闪存作为大容量存储设备

控制器没有足够的带宽供USB大容量存储设备