引导加载程序是计算机的一个组成部分。在计算中,引导是计算机系统在通电时执行的一组操作。今天,现代计算机需要十分之一秒,并且通常会执行开机自检 (POST)。Boot Loader 是一个计算机程序,它在完成自检后加载计算机的主要操作系统。
今天,大多数Linux 发行版都使用GRUB 2 作为引导加载程序。GRUB 2 (GNU Grand Unified Boot loader) 是来自 GNU 项目的引导加载程序包。
GRUB 2 脚本搜索用户的计算机并根据脚本找到的操作系统构建启动菜单。为了反映最新的系统引导选项,在更新内核或添加新内核时会自动重建引导菜单。但是,用户可能希望构建一个包含特定条目的菜单或使这些条目按特定顺序排列。GRUB 2 允许对引导菜单进行基本定制,让用户可以控制屏幕上实际显示的内容。
GRUB 2 使用一系列脚本来构建菜单。这些位于/etc/grub.d/
目录中:
目录中的脚本/etc/grub.d/
按字母顺序读取,因此可以重命名以更改特定菜单条目的引导顺序。
在 Grub 2 中,没有/boot/grub/menu.lst.
它已被/boot/grub/grub.cfg
. 无论何时添加或删除内核,或者当用户运行 update-grub 时,grub.cfg都会被某些 Grub 2 软件包更新覆盖。
启用 Grub 2 密码保护必须遵守以下条件:
用户和密码手动添加到/etc/grub.d/00_header
文件 *. 该文件必须由具有管理权限 (root) 的 Ubuntu 用户编辑,因为它是一个系统文件。运行 update-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 菜单,但加密使临时黑客更难确定您的菜单密码。
超级用户/用户信息和密码不必包含在/etc/grub.d/00_header
文件中。/etc/grub.d
只要将该文件合并到grub.cfg中,该信息就可以放在任何文件中。用户可能更愿意将此数据输入到自定义文件中,这样/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.cfg文件
# grub-mkconfig -o /boot/grub/grub.cfg
Generating grub configuration file ...
您现在可以重新启动系统,系统会提示您输入用户 (root) 和密码。
为安全起见,当您输入密码时,屏幕上不会出现任何内容。完成后,只需验证,系统就会启动。启动密码保护已启用,只有指定的超级用户可以通过按“ e ”编辑 Grub 2 菜单项或按“ c ”访问GRUB 2 命令行。
为了使用 GRUB2 为其他发行版设置密码,您必须使用 grub2-mkpasswd-pbkdf2 命令。
对于 Debian 系统,请注意“ grub2 -xx” 而不是“grub-xx” 。
# grub2-mkpasswd-pbkdf2
在 RHEL 7.1 或 RHEL 7.0 上,您也可以使用相同的命令。
该过程与 Debian 系统的步骤相同。
# cp /etc/grub.d/40_custom /etc/grub.d/40_custom.old
# vim /etc/grub.d/40_custom
这里我们将使用 grub2-mkconfig 命令。还要注意Debian 系统的“ grub2 -x” 而不是“grub-x”
# grub2-mkconfig -o /boot/grub2/grub.cfg
Generating grub configuration file ...
grub 密码保护仅对可以通过按“ e ”或“c”编辑 Grub 2 菜单项的指定超级用户启用。
在 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
文件menuentry
--unrestricted
从菜单条目块中删除参数# vim /boot/grub2/grub.cfg
例如, the line
应该看起来像
现在重新启动,当您选择第一个默认菜单条目以及尝试按“ e ”或“c”编辑条目菜单时,系统会要求您输入密码。
对于使用旧版 grub 的旧发行版,可以使用 grub-md5-crypt 命令设置 grub 密码:
# grub-md5-crypt
然后你应该修改 /boot/grub/menu.lst 文件以插入加密密码
# vim /boot/grub/menu.lst
要设置 grub 密码,请先对 GRUB 配置进行自定义,然后再执行其他任何操作。可以使用 grub 密码过程保护启动过程和条目菜单的修改。你只需要确切地知道你需要什么。在 Red Hat Enterprise Linux 7.2 中添加了 grub2-setpassword 工具,现在它是设置 GRUB 2 密码的标准方法。