真正起作用的是install指令强制失败而非仅blacklist;需在/etc/modprobe.d/下建.conf文件,同时写blacklist模块名和install模块名/bin/false,并更新initramfs后重启验证。

配置文件必须放在 /etc/modprobe.d/ 且以 .conf 结尾
modprobe 只读取 /etc/modprobe.d/ 目录下后缀为 .conf 的文件,其他路径或命名(如 blacklist、blacklist.txt、/etc/blacklist.conf)全被静默忽略。
常见错误是直接编辑 /etc/modprobe.d/blacklist(无后缀),或新建 disable-usb.conf.bak —— 这些都不生效。
正确做法:
- 用
sudo nano /etc/modprobe.d/usb-security.conf新建文件(名字自定,但必须含.conf) - 内容只写两行:
blacklist usb-storageinstall usb-storage /bin/false - 保存后执行
sudo chmod 644 /etc/modprobe.d/usb-security.conf—— 权限不能是 664 或 755,否则 modprobe 跳过读取
只写 blacklist 几乎总失效,install /bin/false 才是关键
blacklist 行本身不阻止加载:它只拦得住手动执行 modprobe usb-storage,拦不住 udev 插 U 盘时自动触发,也拦不住 ums-realtek 依赖它时顺带拉起,更拦不住 initramfs 启动阶段预加载。
真正堵死所有路径的是 install 模块名 /bin/false:
- 系统任何地方尝试加载该模块(包括依赖、脚本、udev 规则),都会执行
/bin/false并立即失败 - 必须和
blacklist成对出现 —— 前者是语义声明,后者才是实际拦截 - 模块名不含扩展名:
usb-storage✅,usb-storage.ko❌,usb-storage.ko.xz❌
禁用前先确认模块是否可被黑名单影响
不是所有模块都能靠配置文件禁用。核心区别在于它是独立 .ko 文件,还是编译进内核(built-in)。
使用ydata-profiling(前身为pandas-profiling)生成全面的数据质量报告,包含相关性分析、缺失值模式和基数检测。导出交互式HTML仪表板和JSON摘要。
验证步骤:
- 运行
ls /lib/modules/$(uname -r)/kernel/drivers/usb/storage/usb-storage.ko*—— 有输出说明是可加载模块,配置有效 - 运行
grep CONFIG_USB_STORAGE /boot/config-$(uname -r)—— 若输出CONFIG_USB_STORAGE=y,说明已内置,此时配置文件完全无效,只能改 GRUB 参数:modprobe.blacklist=usb-storage - 若输出
CONFIG_USB_STORAGE=m(小写 m),才表示它是模块,黑名单 + install 生效
改完配置不更新 initramfs = 白改
即使文件位置、命名、权限、内容全对,若不更新 initramfs,重启后仍可能从旧镜像里把模块拉起来 —— 尤其 USB、storage、filesystem 类模块常被 initramfs 预加载。
对应命令:
- Debian/Ubuntu:
sudo update-initramfs -u - RHEL/CentOS/Fedora:
sudo dracut --force
验证是否进镜像:解压当前 initramfs(lsinitramfs /boot/initrd.img-$(uname -r) | grep usb-storage),没输出才算真正进去了。










