Chapter 10. Protecting GRUB with a password
You can protect GRUB with a password in two ways:
- Password is required for modifying menu entries but not for booting existing menu entries.
- Password is required for modifying menu entries as well as for booting existing menu entries.
10.1. Setting password protection only for modifying menu entries
You can configure GRUB to support password authentication for modifying GRUB menu entries. This procedure creates a /boot/grub2/user.cfg
file that contains the password in the hash format.
Setting a password using the grub2-setpassword
command prevents menu entries from unauthorized modification but not from unauthorized booting.
Procedure
Issue the
grub2-setpassword
command as root.# grub2-setpassword
Enter the password for the user and press the Enter key to confirm the password.
Enter password: Confirm the password:
The root user is defined in the /boot/grub2/grub.cfg
file with the password changes. Therefore, modifying a boot entry during booting requires the root user name and password.
10.2. Setting password protection for modifying and booting menu entries
You can configure GRUB to prevent menu entries from unauthorized modification as well as from unauthorized booting.
If you forget the GRUB password, you will not be able to boot the entries you have reconfigured.
Procedure
-
Open the Boot Loader Specification (
BLS
) file for boot entry you want to modify from the/boot/loader/entries/
directory. -
Find the line beginning with
grub_users
. This parameter passes extra arguments tomenuentry
. Set the
grub_users
attribute to the user name that is allowed to boot the entry besides the superusers, by default this user isroot
. Here is a sample configuration file:title Red Hat Enterprise Linux (4.18.0-221.el8.x86_64) 8.3 (Ootpa) version 4.18.0-221.el8.x86_64 linux /vmlinuz-4.18.0-221.el8.x86_64 initrd /initramfs-4.18.0-221.el8.x86_64.img $tuned_initrd options $kernelopts $tuned_params id rhel-20200625210904-4.18.0-221.el8.x86_64 grub_users root grub_arg --unrestricted grub_class kernel
-
Save and close the
BLS
file.
If you want to protect all the menu entries from booting, you can directly set the grub_users
attribute. For example, if root is the user:
# grub2-editenv - set grub_users="root"