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

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

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

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

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

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

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

【问题讨论】:

  • 这个编程有什么关系?

标签: linux usb udev


【解决方案1】:

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

# Rule: Only mount first partition found on /dev/sd* (USB) devices.
ACTION=="add|change", SUBSYSTEM=="block", KERNEL=="sd*[2-9]", ENV{UDISKS_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*", ENV{UDISKS_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
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-20
    • 1970-01-01
    • 1970-01-01
    • 2018-08-14
    • 1970-01-01
    • 2015-09-12
    相关资源
    最近更新 更多