blacklist和install必须成对使用,单独blacklist几乎无效;blacklist仅拦截显式modprobe调用,而install /bin/false才真正阻断udev自动加载、依赖触发及initramfs预加载。

blacklist 和 install 必须成对写,单独 blacklist 几乎无效
很多人以为写 blacklist usb-storage 就能禁用 USB 存储,结果插入 U 盘照样识别。这是因为 blacklist 只拦得住手动执行 modprobe usb-storage,拦不住 udev 自动加载、模块依赖触发(比如 ums-realtek 会顺带拉起 usb-storage),更拦不住 initramfs 启动时预加载。
真正起作用的是 install usb-storage /bin/false:它覆盖所有加载路径,只要系统任何地方尝试加载该模块,就执行 /bin/false 并立即失败。
-
blacklist行是语义声明,方便人读、兼容旧工具,但不是功能核心 -
install行才是强制拦截,必须和blacklist成对出现 - 模块名不含扩展名——写
usb-storage,别写usb-storage.ko或usb-storage.ko.xz
/etc/modprobe.d/ 下的 .conf 文件有三个硬性条件
配置写得再对,只要违反下面任意一条,modprobe 就会静默跳过,不报错、不提示、也不生效。
Linux系统管理专家,覆盖12大模块:用户权限、SSH、存储、网络、systemd、防火墙、日志监控、备份恢复、TLS证书、Ansible、容器、IaC。提供配置、验证、加固、监控、备份、自动化、故障排查、回滚闭环。关键词:useradd、sudo、sshd_config、chmod、SEL...
- 路径必须是
/etc/modprobe.d/xxx.conf,不能是/etc/modprobe.d/blacklist(无后缀)或/etc/blacklist.conf(不在/etc/modprobe.d/下) - 文件名必须以
.conf结尾,例如/etc/modprobe.d/usb-security.conf;blacklist.txt、disable-module都无效 - 权限必须为
644(即rw-r--r--);设成664或更宽(如755),modprobe直接拒绝读取
先确认模块是否能被黑名单影响,否则白配
不是所有模块都能靠 /etc/modprobe.d/ 配置禁用。关键看它是独立 .ko 文件,还是编译进内核(built-in)。
- 检查是否存在对应
.ko文件:ls /lib/modules/$(uname -r)/kernel/drivers/usb/storage/usb-storage.ko*,有输出说明可禁用 - 检查内核配置:
grep CONFIG_USB_STORAGE /boot/config-$(uname -r),若结果是CONFIG_USB_STORAGE=m(小写 m),表示是模块;若为=y,说明已内置,配置文件完全无效,只能改 GRUB 参数:modprobe.blacklist=usb-storage - 禁用前务必避开核心模块,如
usbcore、pci_core、ext4、vfat——它们被大量子系统依赖,禁用会导致 USB 总线瘫痪或无法挂载根分区
更新 initramfs 是必做动作,否则重启等于没改
很多配置“看起来生效”,但重启后模块照常加载,问题就出在 initramfs 没更新。USB、存储、网络类模块常被 initramfs 预加载,新配置不打进镜像,启动时仍走旧路径。
- Debian/Ubuntu 系统:
sudo update-initramfs -u - RHEL/CentOS/Fedora 系统:
sudo dracut --force - 验证是否进镜像:重启后运行
modprobe -n -v usb-storage,输出中必须含install /bin/false,而不是insmod /lib/modules/...
真正容易被忽略的点是:模块可能有多个别名或自动加载变体(比如禁 bluetooth 不够,btusb、btrtl 还会绕过),得逐个查、逐个配。










