如何阻止内核模块加载?

如何阻止内核模块加载?

我对 Linux 相当陌生,正在寻找一种完全禁止加载内核模块的解决方案。

我知道如何卸载模块,但需要在启动时加载模块之前阻止它。

答案1

首先检查模块名称:

lsmod | less

然后假设加载的模块名称是 my_proc_to_ban

去创建一个脚本,例如:

echo'
install my_proc_to_ban /bin/false
' >> /etc/modprobe.d/blacklist.conf

这将阻止启动或运行您的模块

或者就像您的情况一样,服务器是您的,没有人会加载该模块,您可以简单地:

echo '
blacklist my_proc_to_ban
' >> /etc/modprobe.d/my_proc_to_ban.conf

这将阻止您的模块在启动时加载,但如果在某个阶段需要,您仍然可以加载它。

答案2

一种确定的方法是从 /lib/modules 中删除或移动模块

您还可以使用/etc/modprobe.d/blacklist.conf

在内核命令行上你可以添加

modprobe.blacklist=modname1,modname2,modname3

或者

blacklist=modname1,modname2,modname3

来源 :https://wiki.archlinux.org/index.php/kernel_modules#Blacklisting

根据您使用的发行版:debian(和衍生产品)可能会构建一个 initrd,其中嵌入了脚本认为启动系统所必需的模块。

因此您可能必须通过运行“update-initramfs -u”来重建 initrd 映像。

相关内容