如何设置GRUB菜单的密码
引导加载程序是计算机的一个组成部分。
在计算中,启动是计算机系统在电源上执行的一组操作。
如今,现代计算机持续了一秒钟,通常对自检(发布)进行电源。
引导加载程序是一个计算机程序,可以在完成自检后加载计算机的主操作系统。
如今,大多数Linux发行版使用Grub 2作为引导加载程序。
GRUB 2(GNU Grand Unified Boot Loader)是来自GNU项目的引导加载程序包。
基于以下文件的GRUB2配置
GRUB 2脚本搜索用户的计算机并根据脚本查找的操作系统构建启动菜单。
要反映最新的系统引导选项,启动菜单会在更新内核时自动重建,或者添加新内核。
但是,用户可能希望构建包含特定条目的菜单或者以特定顺序具有条目。
GRUB 2允许启动菜单的基本自定义,以便用户控制屏幕上实际出现的内容。
GRUB 2使用一系列脚本来构建菜单。
这些位于/etc/grub.d /
目录中:
- 00_HEADER从/etc/default/grub文件加载grub 2设置。
- 10_Linux,它在Hat Enterprise Linux的默认分区中找到内核。
- 30_OS-Prober,它构建用于在其他分区上的操作系统的条目。
- 40_custom,用于创建其他菜单条目的模板。
来自/etc/grub.d /
目录的脚本按字母顺序读取,因此可以重命名以更改特定菜单条目的启动顺序。
1)在基于Debian的系统上设置GRUB启动密码
搭配grub 2,没有/boot/grub/menu.lst.
它已被/boot/grub/grub.cfg
取代。
GRUB.CFG被某些GRUB 2封装更新覆盖,每当添加或者删除内核时,或者用户运行更新-CRUB时。
启用GRUB 2密码保护必须尊重以下条件:
- 必须识别授权用户,
- 必须指定他们的密码,
- 必须识别要受保护的菜单项。
用户和密码手动添加到/etc/grub.d/00_header
文件*。
必须由Ubuntu用户使用管理权限(root)编辑文件,因为它是一个系统文件。
运行更新GRUB时,用户/密码信息将自动添加到GRUB 2菜单配置文件(GRUB.CFG)。
生成加密密码
要使GRUB需要密码启动系统,我们必须使用命令GRUB-MKPASSWD-PBKDF2生成加密密码。
所有版本的GRUB 2都可以使用此加密密码保护
# grub-mkpasswd-pbkdf2 Enter password: Reenter password: PBKDF2 hash of your password is grub.pbkdf2.sha512.10000.380AD91E6C36BB4018B5CABDAFF5CABC52A16B6EFF503B6BB2E21199C006C526AEE3A2FF8CF41F9A07AEFB1E8E2275ABB44C41B1429B9C5D509786E2B57A51DA.989F1E9FAC061899E1BB8CB38D2119B26E6CE79A5CBB637E5A611AE099EBBF7CD9BCF1A3EC516CE0E4AD007B7DF8E679220BC845E07E440F134DED2537081F54
此命令将所需的密码转换为位于GRUB 2文件中的非常长的字母数字代码。
实际密码在GRUB 2脚本中不再可见。
虽然对计算机的物理访问可以绕过GRUB 2菜单,但加密使休闲黑客更难确定菜单密码。
在GRUB2主配置文件上设置密码
超级用户/用户信息和密码不必包含在/etc/grub.d/00_header
文件中。
只要该文件纳入GRUB.CFG,该信息可以放在任何/etc/grub.d
文件中。
用户可能更喜欢将此数据输入自定义文件,例如/etc/grub.d/40_custom
,因此即使应该更新GRUB软件包,也不会被覆盖。
# cp /etc/grub.d/40_custom /etc/grub.d/40_custom.old
使用文本编辑器打开GRUB配置文件,并在其末尾添加下面的内容。
然后将grub.pbkdf2.sha512.xxxxx替换为上面显示的加密密码的值
# vim /etc/grub.d/40_custom set superusers="root" password_pbkdf2 root grub.pbkdf2.sha512.10000.380AD91E6C36BB4018B5CABDAFF5CABC52A16B6EFF503B6BB2E21199C006C526AEE3A2FF8CF41F9A07AEFB1E8E2275ABB44C41B1429B9C5D509786E2B57A51DA.989F1E9FAC061899E1BB8CB38D2119B26E6CE79A5CBB637E5A611AE099EBBF7CD9BCF1A3EC516CE0E4AD007B7DF8E679220BC845E07E440F134DED2537081F54
更新GRUB文件
执行命令配置以生成新grub.cfg文件
# grub-mkconfig -o /boot/grub/grub.cfg Generating grub configuration file ...
我们现在可以重新启动系统,这将提示我们输入用户(root)和密码。
对于安全性,当我们输入密码时,屏幕上不会出现任何内容。
完成后,只需验证,系统将启动。
启用密码保护并启用引导,只有指定的超级用户可以通过按"E"来编辑GRUB 2菜单项或者通过按"C"来访问GRUB 2命令行。
2)设置GRUB密码仅用于修改CentOS和Rhel 7.1上的菜单条目
为了为GRUB2设置其他分布的密码,必须使用GRUB2-MKPASSWD-PBKDF2命令。
生成加密密码
注意"GRUB2-X-X"而不是Debian系统的"Grub-x-x"。
# grub2-mkpasswd-pbkdf2
在RHEL 7.1或者RHEL 7.0上,我们也可以使用相同的命令。
在GRUB2主配置文件上设置密码
该过程与Debian系统的步骤相同。
# cp /etc/grub.d/40_custom /etc/grub.d/40_custom.old
# vim /etc/grub.d/40_custom
更新GRUB文件
其中我们将使用grub2-mkconfig命令。
还要注意"GRUB2-X"而不是"GRUB-X",如Debian系统
# grub2-mkconfig -o /boot/grub2/grub.cfg Generating grub configuration file ...
仅针对指定的超级用户启用GRUB密码保护,谁可以通过按"E"或者"C"来编辑GRUB 2菜单项。
3)设置Centos 7和Rhel 7.2上修改和引导条目菜单的GRUB密码
在RHEL 7.2(更高版本)和CentOS 7中,GRUB 2还提供带GRUB2-SETPASSWORD命令的密码保护。
设置修改条目菜单的密码
使用grub2-setpassword设置密码可防止从未授权修改的菜单条目,但不是从未经授权的引导中获取:
# grub2-setpassword Enter password: Confirm password:
在此步骤中,仅针对指定的超级用户启用GRUB密码保护,谁可以通过按"E"或者"C"编辑GRUB 2菜单项。
此过程创建包含密码散列的"/boot/grub2/user.cfg"文件。
此密码,root用户的用户在"/boot/grub2/grub.cfg"文件中定义。
使用此更改,在引导期间修改引导条目要求我们指定root用户名和密码。
不要手动将超级用户帐户和密码添加到grub.cfg文件,因为grub2-mkconfig命令将在重新生成时覆盖此文件。
设置引导条目菜单的密码
现在,要为修改和引导条目菜单设置Grub2密码,我们应该继续以下步骤
- 打开
/boot/grub2/grub.cfg
文件 - 找到要通过搜索以"菜单中"开头的行来保护密码的引导条目
- 从菜单条目块中删除"--UNRestrict""参数
# vim /boot/grub2/grub.cfg
现在重启,当我们选择第一个默认菜单条目时,我们将被要求输入密码,并且当我们通过按"E"或者"C"来尝试编辑条目菜单时。
4)使用遗留GRUB设置旧分布的密码
对于使用传统GRUB的旧分发,可以使用GRUB-MD5-CRYPT命令设置GRUB密码:
# grub-md5-crypt
然后,我们应该修改/boot/grub/menu.lst文件来插入加密密码
# vim /boot/grub/menu.lst