Linux根目录下的initrd.img和vmlinuz两个软连接有什么作用?

Linux根目录下的initrd.img和vmlinuz两个软连接有什么作用?他们的权限是777,因此又是如何保障不被普通用户修改?

阅读 9.1k
3 个回答

一些发行版的 GRUB 配置及相关脚本使用的是 /initrd.img 和 /vmlinuz 路径,所以有的发行版(如 Debian)会在根目录建立相应的软链接来避免一些可能的问题,比如有时候内核升级后系统不能启动有可能是这两个软链接失效导致的,大部分现代的发行版如 Arch Linux 是不需要的。

为什么要有那两个链接,我不太了解,合理地做些推测的话,也许是为了保持传统。早期的unix内核的保存位置就是 /unix 。后来有了虚拟内存支持以后变成 /vmunix。然后linux学unix,内核保存在 /vmlinux 。而/vmlinuz最后的那个z表示这是经过压缩的(不是普通的压缩格式,而是类似于winrar的自解压包)。由于有这样的历史,或许有些程序仍然依赖于这种方式。

而链接权限的问题:链接本身只是额外占用一个inode,保存了目标的路径,对链接的绝大部分操作(比如read/write)都是直接被OS重定向到目标文件,只有symlink/readlink/rename/unlink这少数几个能够直接操作在链接上。并且,链接文件本身是没有权限这个概念的,虽然ls -l看到的是lrwxrwxrwx,但是关键的只是开头的l,后面都是magic number。普通用户对root创建的链接只有readlink权限(至于具体的逻辑,我想可能还是类似用户组那一套),所以不会造成安全问题。

vmlinuz 好像是Linux内核吧

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题