我一直在阅读一篇 Linux 安全论文,其中说我们应该只授予 /boot 目录的 root 访问权限。就权限而言,“只有 root 权限才能访问 /boot 目录”是什么意思?如果我将 /boot 设置为 700,该目录中的许多向 root 组和其他用户授予权限的文件将无法再访问? (在我的例子中,294 个文件至少设置了其他文件的读取权限)。 /boot目录不应该至少设置到755吗?但在这种情况下,它是世界访问而不仅仅是根访问?其实问题应该是:除了 root 之外,还有其他进程需要访问 /boot 目录吗?我该如何检查? /var/log/boot.log 没有给出任何答案到目前为止,我明白计算机是这样启动的:母亲 BIOS/efi 检查硬件并查找 mbr/boot 介质。然后它加载引导加载程序并给出启动控制它。然后引导加载程序加载内核并为其提供引导控制权。内核启动服务(除其他外)。所有这些操作是仅由 root 执行还是由其他用户或其他 root 组成员执行?
/boot/grub2 目录也是如此。默认情况下,该目录的权限设置为 700:
ls -ld /boot/grub2
drwx------. 4 root root 99 Aug 18 19:37 /boot/grub2
该目录中有许多文件:
find /boot/grub2 -type f | wc -l
282
但只有其中2个不能被其他人访问
find /boot/grub2 -type f ! -perm /007 -printf '%y %u %g %m %p\n'
f root root 600 /boot/grub2/grubenv
f root root 600 /boot/grub2/user.cfg
那么为什么要将 /boot/grub2 设置为 700,这与该目录中设置的权限是不一致的呢?
请告诉我我在那里错过了什么。
谢谢各位!
答案1
如果您设置/boot/grub2
为其700
下没有文件,则无论其权限如何,普通用户都可以访问。在引导期间或引导后,不会读取或使用此目录下的任何文件。user.cfg
包含启动密码,因此保护此文件是有意义的,但是仅有的对于本地用户。简而言之,我认为没有理由覆盖您的发行版默认设置的内容。
一个更重要的目录是/boot/efi
设置为,700
因为它通常是一个 FAT 分区,默认情况下允许每个人更改文件,并且您不希望非特权用户干预您的 UEFI 启动文件。
您可以设置/boot
为755
或,700
但更改发行版默认值毫无意义。此目录下没有本地用户可以读取并获得 root 访问权限的特殊文件。vmlinuz
并且initrd
可以使用您的包管理器或发行版公共文件轻松访问。
简而言之,您痴迷于一个您编造的但并不存在的安全问题。