CentOS系统GRUB密码设置的核心在于修改/etc/grub.conf或/boot/grub/grub.cfg文件并添加password参数,但在CentOS 7及更高版本中,强烈建议采用加密后的GRUB 2密码机制以保障系统启动层级的安全性,具体操作需结合root权限执行grub2setpassword命令。
在服务器运维领域,启动引导加载程序(Boot Loader)的安全往往被忽视,却是最脆弱的防线之一,2026年的网络安全态势表明,针对物理接触攻击和引导加载程序劫持的防御已成为企业级Linux部署的标准配置,GRUB作为CentOS系统的核心引导组件,其密码保护机制直接决定了恶意用户能否通过单用户模式绕过系统认证。

GRUB密码机制的演进与版本差异
理解GRUB密码的设置逻辑,必须首先厘清CentOS不同版本底层架构的差异,许多运维人员仍停留在CentOS 6时代的配置习惯,这在CentOS 7/8/9环境中会导致配置失效甚至引导失败。
CentOS 6:Legacy GRUB的明文隐患
在CentOS 6及更早版本中,系统使用GRUB Legacy(版本0.97),其配置文件位于/boot/grub/grub.conf。
- 配置方式:在启动项kernel行之前添加
password md5 <加密字符串>。 - 安全缺陷:虽然支持MD5加密,但配置文件权限若管理不当,密码易被读取。
- 适用场景:仅适用于遗留系统维护,新项目严禁使用。
CentOS 7/8/9:GRUB 2的标准化加密
从CentOS 7开始,系统全面转向GRUB 2,其配置文件为/boot/grub2/grub.cfg(CentOS 8+为/boot/grub2/grub.cfg或/boot/efi/EFI/centos/grub.cfg),该文件由grub2mkconfig自动生成,直接修改无效且会在内核更新后覆盖。
- 核心命令:使用
grub2setpassword工具生成并存储加密密码。 - 存储位置:加密后的密码哈希值通常存储在/etc/grub.d/01_users或/etc/grub.d/10_linux等脚本生成的配置片段中,或直接写入/etc/default/grub的相关模块配置。
- 优势:采用PBKDF2等更强哈希算法,防止彩虹表攻击。
实战操作:CentOS 7+ 设置GRUB密码
以下流程基于2026年主流CentOS Stream及RHEL兼容版本的标准化运维规范,确保操作的可逆性与安全性。
生成加密密码
无需手动计算哈希值,系统内置工具即可完成。

- 以root身份登录系统。
- 执行命令:
grub2setpassword。 - 系统提示输入并确认密码。
- 成功后,系统会自动在/etc/grub.d/目录下生成包含加密密码的脚本文件,并在下次生成grub.cfg时生效。
验证配置生效
为确保密码已正确嵌入引导配置,需检查配置文件。
- 检查命令:
cat /boot/grub2/grub.cfg | grep password - 预期结果:应看到类似
password_pbkdf2 root grub.pbkdf2.sha512...的字符串,而非明文。 - 注意:若未看到结果,请执行
grub2mkconfig o /boot/grub2/grub.cfg强制重新生成配置。
测试与回滚
- 重启测试:重启服务器,在GRUB菜单界面按
e键编辑启动项,系统应弹出密码输入框。 - 紧急回滚:若忘记密码或配置错误导致无法引导,可通过Live CD启动,挂载根分区,删除/etc/grub.d/中相关的用户脚本,并重新生成grub.cfg。
常见误区与高级安全策略
在实际运维中,许多技术人员陷入配置误区,导致安全策略形同虚设。
直接修改grub.cfg
直接编辑/boot/grub2/grub.cfg是严重错误,任何内核更新或系统升级都会覆盖此文件,导致密码丢失,必须通过修改/etc/default/grub或使用grub2setpassword工具,确保配置持久化。
仅依赖BIOS/UEFI密码
BIOS密码可防止从外部设备启动,但无法阻止本地用户通过GRUB菜单进入单用户模式,GRUB密码是最后一道防线,两者需配合使用,形成纵深防御体系。
场景:如何为不同用户设置不同权限?
对于多租户环境,可自定义GRUB用户权限。

- 编辑/etc/grub.d/01_users文件。
- 添加用户定义:
set superusers="admin" password_pbkdf2 admin <hash>
- 生成配置并重启,只有admin用户可编辑启动项,普通用户仅可查看菜单。
FAQ:CentOS GRUB密码常见问题
Q1: CentOS 8/9 的GRUB配置文件路径有何不同?
在CentOS 8及CentOS Stream 9中,若使用UEFI引导,配置文件位于/boot/efi/EFI/centos/grub.cfg;若为BIOS引导,则位于/boot/grub2/grub.cfg,操作逻辑一致,均使用grub2setpassword,但需确认当前引导模式对应的配置文件路径。
Q2: 忘记GRUB密码后如何重置?
- 使用CentOS安装介质或Live CD启动。
- 挂载系统根分区至/mnt。
- chroot进入系统:
chroot /mnt。 - 删除/etc/grub.d/01_users或相关包含密码哈希的文件。
- 执行
grub2mkconfig o /boot/grub2/grub.cfg(或UEFI路径)。 - 重启系统,密码保护即被移除。
Q3: GRUB密码是否影响系统自动更新?
不影响,grub2setpassword生成的配置是持久化的,系统自动更新内核时,grub2mkconfig脚本会正确读取用户配置并重新生成grub.cfg,密码保护将持续有效。
CentOS系统GRUB密码的设置已从CentOS 6的明文/MD5模式全面过渡到GRUB 2的PBKDF2加密模式,运维人员应严格遵循grub2setpassword的标准流程,避免直接修改配置文件,并结合UEFI安全启动等机制,构建完整的服务器启动层安全防线。
参考文献
- Red Hat, Inc. (2026). Red Hat Enterprise Linux 9 Security Guide: Configuring GRUB 2. Red Hat Customer Portal.
- CentOS Project. (2025). CentOS Stream 9 Documentation: Bootloader Configuration. CentOS Documentation Wiki.
- National Institute of Standards and Technology (NIST). (2024). Guidelines on Password Security (SP 80063B Update). U.S. Department of Commerce.
- GNU Project. (2026). GRUB Manual: Password Protection. Free Software Foundation.

