Arch Linux可通过GRUB命令无密码登录并修改根文件的安全问题及解决方法咨询
嘿,这个问题确实戳中了Linux系统本地安全的一个关键点——没错,这种情况绝对不安全,只要能物理接触到你的笔记本,任何人都能通过这个GRUB操作绕开正常登录,直接拿到根权限,随意修改系统文件、窃取数据,风险非常大。
之所以能这么操作,是因为GRUB默认允许用户修改启动参数,而init=/bin/bash这个参数会让系统跳过正常的初始化流程,直接启动一个拥有根权限的bash shell。这时文件系统默认是只读挂载,但你只需要执行一句mount -o remount,rw /就能改成可写状态,自然能对所有根文件进行编辑了。
给你几个实用的解决办法,按防护强度从易到难排序:
给GRUB设置密码(最直接的防护)
- 先通过
grub-mkpasswd-pbkdf2命令生成加密后的密码,按照提示输入你想设置的GRUB密码,终端会输出一串加密字符串,把它复制下来。 - 编辑
/etc/grub.d/40_custom文件,在末尾添加以下内容(替换成你的用户名和刚才生成的加密字符串):set superusers="your_username" password_pbkdf2 your_username 生成的加密字符串 - 执行
grub-mkconfig -o /boot/grub/grub.cfg更新GRUB配置,重启后再想进入GRUB编辑模式就需要输入密码了。
- 先通过
启用BIOS/UEFI密码(物理层面阻断)
开机时按对应的按键(通常是F2、Del、Esc等)进入BIOS/UEFI设置界面,找到密码设置选项,设置一个开机密码。这样别人连GRUB界面都进不去,从源头阻止了修改启动参数的可能。启用LUKS磁盘加密(最彻底的防护)
这是从数据层面解决问题的方案,用LUKS加密你的根分区,即使别人把硬盘拆下来拿到别的机器上,没有解密密码也无法访问任何数据。不过这个操作需要重新安装系统或者对现有分区进行加密,操作前一定要备份好所有重要数据,避免丢失。限制GRUB编辑权限(辅助防护)
编辑/etc/default/grub文件,确保里面有这两行设置:GRUB_DISABLE_RECOVERY="true" GRUB_DISABLE_EDITOR="true"如果没有就手动添加,然后执行
grub-mkconfig -o /boot/grub/grub.cfg更新配置。不过这个方法不如设置密码稳妥,存在被绕过的可能,建议作为补充手段使用。
优先推荐你结合BIOS密码+GRUB密码+磁盘加密的三层防护方案,基本能杜绝物理接触带来的安全风险。如果暂时没法做磁盘加密,先把GRUB和BIOS密码加上,也能大幅提升系统的安全性。
备注:内容来源于stack exchange,提问作者Marcius Bezerra

