为什么 Linux 内核映像默认不是只读的?

为什么 Linux 内核映像默认不是只读的?

我上周安装了 FUSE,但在运行来宾安装时遇到了问题。应用程序尝试从用户空间读取内核映像。好的。 chmod 755,我正在做生意。还是..我想知道。内核默认以这种方式安装的技术原因是什么?为什么不被世界可读?

-rw------- 1 root root  7104112 Dec 11 09:36 vmlinuz-4.4.0-104-generic
-rw------- 1 root root  7141424 Feb 12 19:57 vmlinuz-4.4.0-116-generic
-rw------- 1 root root  7144816 Apr  2 14:05 vmlinuz-4.4.0-119-generic

我不可能是唯一一个因此而引发问题的人。

答案1

你的安装、umask什么的都没有问题。

对于Ubuntu:

这种模式的改变是“设计使然”。对于本地管理员来说,如何放宽此限制,您可以使用dpkg-statoverride

sudo dpkg-statoverride --update --add root root 0644 /boot/vmlinuz-$(uname -r)

要让每个新内核自动发生这种情况,请创建 /etc/kernel/postinst.d/statoverride(不要忘记 chmod +x):

#!/bin/sh
version="$1" # passing the kernel version is required 
[ -z "${version}" ] && exit 0
dpkg-statoverride --update --add root root 0644 /boot/vmlinuz-${version}

我的观点是这是正确的解决方案之一;这是 Kees Cook 的评论(稍作修改和格式化)引用https://bugs.launchpad.net/ubuntu/+source/linux/+bug/759725。查看该内容以获取有关为何如此制作以及其他信息的更多信息。

相关内容