我编写/调整了一个自定义内核模块并安装了它。
它按预期工作,但我注意到我系统上的其他内核模块使用 xz 压缩并具有 0444 权限,而我没有压缩我的并使用可执行位集(0555 权限)安装它。
$ stat --format=%A /path/to/my-module.ko
-r-xr-xr-x
$ stat --format=%A /path/to/other-module.ko.xz
-r--r--r--
这是否有任何影响——性能、安全性或其他方面?我计划压缩我的并设置权限以匹配其他模块正在使用的内容,但我不知道他们正在使用的压缩和权限的潜在动机。
关于权限:
无需为模块设置可执行位或写入标志。模块文件应该是可读的,就是这样。
insmod
,modinfo
,modprobe
或其他东西需要读取模块文件。组或其他人的读取权限可能需要通过objdump
,来调试模块nm
,即没有真正的理由为任何人设置可执行位到模块。
关于压缩:
Linux 内核具有内置的 XZ 压缩实现。Linux 内核可以成功读取(先前解压缩)
initrd
映像、内核模块甚至其自身(内核文件名中的vmlinuz
最后一个z
告诉内核映像已压缩)。我不知道你用的是什么发行版。但是,如果您有压缩的内核模块,那么这是您的发行版的规则。当然,压缩模块的大小比未压缩的模块要小,但是如果内核模块编译时没有调试符号,那么压缩和未压缩内核模块的大小差异会很小。另一方面,考虑到不需要大量模块,最好使用压缩并为其他东西节省空间,而不是将其仅用于存储大量模块。