Linux禁用USB存储设备自动挂载需三步:先黑名单usb-storage和uas模块并设install为/bin/false;再通过udev规则匹配接口类08/06/50禁用授权;最后限制udisks2挂载权限与disk组访问。

Linux 禁用 USB 存储设备自动挂载,核心目标是阻止 U 盘、移动硬盘等被系统识别并挂载,同时保留键盘、鼠标等必要 USB 外设功能。这不是关闭整个 USB 总线,而是精准拦截存储类设备的驱动加载与设备节点生成。
禁用 usb-storage 和 uas 内核模块
这是最直接有效的方式,因为绝大多数 USB 存储设备依赖这两个模块工作。
- 临时禁用(立即生效,重启后失效):
sudo modprobe -r usb-storage uas(若提示“模块正被使用”,需先卸载已挂载设备) - 永久禁用(推荐):
编辑 /etc/modprobe.d/blacklist.conf,添加两行:
blacklist usb-storage
blacklist uas
并追加防绕过规则:
install usb-storage /bin/false
install uas /bin/false - 保存后执行 sudo update-initramfs -u(Debian/Ubuntu)或 sudo dracut --force(RHEL/Fedora),再重启生效
通过 udev 规则屏蔽存储设备识别
即使模块未加载,某些设备仍可能触发内核事件。udev 规则可在设备接入时主动忽略或撤销授权。
- 新建规则文件:
sudo nano /etc/udev/rules.d/99-disable-usb-storage.rules - 写入以下内容(匹配标准 USB 大容量存储接口):
SUBSYSTEMS=="usb", ATTRS{bInterfaceClass}=="08", ATTRS{bInterfaceSubClass}=="06", ATTRS{bInterfaceProtocol}=="50", ENV{UDISKS_IGNORE}="1"
或更严格的强制禁用(撤销设备授权):
SUBSYSTEM=="usb", ATTR{idVendor}!="", ATTR{idProduct}!="", ATTR{bInterfaceClass}=="08", ATTR{bInterfaceSubClass}=="06", ATTR{bInterfaceProtocol}=="50", RUN+="/bin/sh -c 'echo 0 > /sys$DEVPATH/authorized'" - 重载规则:
sudo udevadm control --reload-rules && sudo udevadm trigger
限制用户挂载权限与设备访问
作为纵深防御,即使设备被识别,也阻止普通用户挂载或读写。
- 确保 /etc/udisks2/udisks2.conf 中:
[defaults]
allow_user_mount=false(默认为 false,建议显式设置) - 将普通用户从 disk 组移出(避免直接访问 /dev/sdX):
sudo gpasswd -d username disk - 检查 /etc/fstab,删除任何针对 USB 设备的自动挂载条目;如需保留固定盘,务必使用 UUID 而非 /dev/sdX
验证是否生效
插入 U 盘后执行以下命令确认防护到位:
- lsmod | grep -E "(usb-storage|uas)" —— 应无输出
- lsblk -f —— U 盘分区不应出现
- dmesg | tail -20 —— 查看是否有 "USB Mass Storage" 或 "sdb" 类日志,若有但无后续挂载行为,说明规则起效
- udisksctl info -b /dev/sdb1(若设备意外出现)—— 应提示 “not found” 或 “ignored”


















