Оглавление |
---|
Информация | ||
---|---|---|
| ||
|
Предупреждение | ||
---|---|---|
В общем случае, после внесения изменений в конфигурационные файлы загрузчика (файл /etc/default/grub или файлы в каталоге /etc/grub.d/) для вступления изменений в силу следует выполнить команду обновления загрузчика:
При этом будет переписан файл /boot/grub/grub.cfg, и все внесенные в него изменения будут утеряны. Для внесения изменений в конфигурационные файлы требуются права суперпользователя (при включенном МКЦ - права суперпользователя с высоким уровнем целостности). |
Установка и изменение пароля для меню загрузчика
Информация |
---|
Системный загрузчик GRUB2 поддерживает возможность задания паролей в открытом виде, и многие инструкции предлагают именно такой способ. В настоящей инструкции предлагается более безопасный способ задания пароля в виде хеша. Независимо от выбранного способа рекомендуется максимально ограничить доступ к файлу с паролем . |
Для смены пароля системного загрузчика необходимо создать хеш нового пароля и заменить им старый хеш:
Для генерации хеша выполнить команду и дважды ввести новый пароль:
Command grub-mkpasswd-pbkdf2 Полученный хеш (начиная со слова grub) скопировать в буфер (например, выделив его с помощью мыши, и нажав правую кнопку мыши выбрать "копировать");
С помощью текстового редактора внести изменения в файл /etc/grub.d/07_password (создать такой файл, если его нет). Например, для редактирования с помощью редактора nano можно воспользоваться командой:
Command sudo nano /etc/grub.d/07_password В результате редактирования должен получиться текст вида:
Информация #!/bin/bash
cat << EOF
set superusers="username"
password_pbkdf2 username grub.pbkdf2.sha512.10000.9C319610666...........
EOFЦветами условно обозначены имя пользователя (красный) и созданный кеш (зеленый), в реальном редакторе цветовых обозначений нет.
Сохранить файл и выйти из редактора;
Установить права доступа к созданному новому файлу, разрешив его выполнение и максимально ограничив чтение:
Command sudo chmod 700 /etc/grub.d/07_password Для того, чтобы сделанные изменения вступили в силу, обновить загрузчик командой:
Command sudo update-grub Информация Можно отключить запрос пароля grub, например для записи Windows. Для этого в файла /boot/grub/grub.cfg в параметрах загрузочного меню (строка, начинающаяся с "menuentry") указать (добавить) параметр --unrestricted, например:
Блок кода ... --class gnu-linux --class gnu --class os --unrestricted ...
Предупреждение Изменения, сделанные в файле /etc/grub/grub.cfg не будут сохраняться после выполнения команды обновления загрузчика update-grub. Для того, чтобы изменения сделать постоянными нужный элемент меню можно добавить в файл /etc/grub.d/40_custom, указав в нем все необходимые параметры. Например, для создания элемента меню "Windows 10 без пароля" для загрузки Windows 10 без запроса пароля (опция --unrestricted) добавить следующие строки:
Блок кода menuentry "Windows 10 без пароля" --class windows --class os --unrestricted { insmod ntfs search --no-floppy --set=root --fs-uuid <UUID_загрузочного_раздела_Windows> ntldr /bootmgr }
Для получения значения UUID загрузочного раздела Windows можно использовать команду:
Блок кода sudo blkid
В качестве образца для создания своего элемента меню можно использовать записи menuentry из файла /boot/grub/grub.cfg.
Запрет загрузки в режиме восстановления. Таймаут ожидания выбора при загрузке.
Для того, чтобы запретить варианты загрузки в режиме восстановления:
Открыть в редакторе файл /etc/default/grub:
Command sudo nano /etc/default/grub Раскомментировать строку:
Информация GRUB_DISABLE_RECOVERY="true" Дополнительно в этом же файле можно уменьшить время ожидания при выборе варианта загрузки (по умолчанию - 5 секунд), например, совсем скрыв меню (в таком случае в меню НЕЛЬЗЯ будет попасть, зажав при загрузке клавишу Shift, и возможности выбора ОС/ядра не будет):
Информация GRUB_TIMEOUT=0 Для скрытия загрузчика с сохранением возможности переключения клавишей Shift на этап выбора ОС/ядра к параметру GRUB_TIMEOUT=0 добавить GRUB_HIDDEN_TIMEOUT=5:
Информация GRUB_TIMEOUT=0
GRUB_HIDDEN_TIMEOUT=5Сохранить изменения, выйти из редактора;
Для того, чтобы эти изменения вступили в силу, обновить загрузчик командой:
Command sudo update-grub
Пункты меню, позволяющие выбрать для загрузки режим восстановления, можно убрать из меню и путем редактирования файла /boot/grub/grub.cfg (см. ниже, но эти изменения не будут сохраняться после выполнения команды обновления загрузчика update-grub.
Запрет выбора загрузки ядра GENERIC
Для того, чтобы запретить все варианты загрузки, кроме варианта HARDENED:
С правами суперпользователя открыть в редакторе файл /boot/grub/grub/grub.cfg:
Command sudo nano /boot/grub/grub.cfg Закомментировать ненужные блоки кода, начинающиеся с menuentry, например:
Информация #menuentry 'AstraLinuxCE GNU/Linux, с Linux 4.15.3-1-generic' --class astralinuxce --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-4.15.3-1-generic-advanced-f923f219-185e-4747-9066-6b09fd0103ae' {
# load_video
# insmod gzio
# if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
# insmod part_msdos
# insmod ext2
# set root='hd0,msdos1'
# if [ x$feature_platform_search_hint = xy ]; then
# search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 f923f219-185e-4747-9066-6b09fd0103ae
# else
# search --no-floppy --fs-uuid --set=root f923f219-185e-4747-9066-6b09fd0103ae
# fi
# echo 'Загружается Linux 4.15.3-1-generic …'
# linux /boot/vmlinuz-4.15.3-1-generic root=UUID=f923f219-185e-4747-9066-6b09fd0103ae ro quiet net.ifnames=0
# echo 'Загружается начальный виртуальный диск …'
# initrd /boot/initrd.img-4.15.3-1-generic
#}
Предупреждение |
---|
Изменения, сделанные в файле /etc/grub/grub.cfg не будут сохраняться после выполнения команды обновления загрузчика update-grub. |
Настройка выбора ядра для загрузки
Для указания ядра, загружаемого по умолчанию используется параметр GRUB_DEFAULT в файле /etc/default/grub. Значением этого параметра может быть:
- число — порядковый номер элемента выбора ядра меню загрузчика. Нумерация начинается с нуля;
идентификатор элемента меню загрузчика. Например:
Блок кода GRUB_DEFAULT=gnulinux-5.15.0-70-hardened-advanced-4d59e93e-ab3e-4f05-be84-1774cd76ab8d
специальное значение saved - использовать последнее загруженное ядро (для сохранения информации о последнем загруженном ядре необходимо добавить параметр
GRUB_SAVEDEFAULT="true"
):Блок кода GRUB_DEFAULT="saved"
Получить список элементов меню выбора ядра можно командой:
Command |
---|
sudo grep ^menuentry /boot/grub/grub.cfg |
Пример вывода команды:
Блок кода | ||
---|---|---|
| ||
menuentry 'AstraLinux GNU/Linux, with Linux 5.15.0-70-lowlatency' --class astralinux --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-5.15.0-70-lowlatency-advanced-4d59e93e-ab3e-4f05-be84-1774cd76ab8d' { menuentry 'AstraLinux GNU/Linux, with Linux 5.15.0-70-lowlatency (recovery mode)' --class astralinux --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-5.15.0-70-lowlatency-recovery-4d59e93e-ab3e-4f05-be84-1774cd76ab8d' { menuentry 'AstraLinux GNU/Linux, with Linux 5.15.0-70-hardened' --class astralinux --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-5.15.0-70-hardened-advanced-4d59e93e-ab3e-4f05-be84-1774cd76ab8d' { menuentry 'AstraLinux GNU/Linux, with Linux 5.15.0-70-hardened (recovery mode)' --class astralinux --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-5.15.0-70-hardened-recovery-4d59e93e-ab3e-4f05-be84-1774cd76ab8d' { menuentry 'AstraLinux GNU/Linux, with Linux 5.15.0-70-generic' --class astralinux --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-5.15.0-70-generic-advanced-4d59e93e-ab3e-4f05-be84-1774cd76ab8d' { menuentry 'AstraLinux GNU/Linux, with Linux 5.15.0-70-generic (recovery mode)' --class astralinux --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-5.15.0-70-generic-recovery-4d59e93e-ab3e-4f05-be84-1774cd76ab8d' { menuentry 'AstraLinux GNU/Linux, with Linux 5.10.176-1-hardened' --class astralinux --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-5.10.176-1-hardened-advanced-4d59e93e-ab3e-4f05-be84-1774cd76ab8d' { menuentry 'AstraLinux GNU/Linux, with Linux 5.10.176-1-hardened (recovery mode)' --class astralinux --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-5.10.176-1-hardened-recovery-4d59e93e-ab3e-4f05-be84-1774cd76ab8d' { menuentry 'AstraLinux GNU/Linux, with Linux 5.10.176-1-generic' --class astralinux --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-5.10.176-1-generic-advanced-4d59e93e-ab3e-4f05-be84-1774cd76ab8d' { menuentry 'AstraLinux GNU/Linux, with Linux 5.10.176-1-generic (recovery mode)' --class astralinux --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-5.10.176-1-generic-recovery-4d59e93e-ab3e-4f05-be84-1774cd76ab8d' { menuentry 'AstraLinux GNU/Linux, with Linux 5.4.0-110-generic' --class astralinux --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-5.4.0-110-generic-advanced-4d59e93e-ab3e-4f05-be84-1774cd76ab8d' { menuentry 'AstraLinux GNU/Linux, with Linux 5.4.0-110-generic (recovery mode)' --class astralinux --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-5.4.0-110-generic-recovery-4d59e93e-ab3e-4f05-be84-1774cd76ab8d' { |
Идентификаторы элементов меню, которые можно использовать для задания умолчания, находятся после параметра $menuentry_id_option
.
Получить список элементов меню с их номерами можно командой:
Command |
---|
sudo grep 'menuentry ' /boot/grub/grub.cfg | cut -f 2 -d "'" | nl -v 0 |
Пример вывода команды:
Блок кода | ||
---|---|---|
| ||
0 AstraLinux GNU/Linux, with Linux 5.15.0-70-lowlatency 1 AstraLinux GNU/Linux, with Linux 5.15.0-70-lowlatency (recovery mode) 2 AstraLinux GNU/Linux, with Linux 5.15.0-70-hardened 3 AstraLinux GNU/Linux, with Linux 5.15.0-70-hardened (recovery mode) 4 AstraLinux GNU/Linux, with Linux 5.15.0-70-generic 5 AstraLinux GNU/Linux, with Linux 5.15.0-70-generic (recovery mode) 6 AstraLinux GNU/Linux, with Linux 5.10.176-1-hardened 7 AstraLinux GNU/Linux, with Linux 5.10.176-1-hardened (recovery mode) 8 AstraLinux GNU/Linux, with Linux 5.10.176-1-generic 9 AstraLinux GNU/Linux, with Linux 5.10.176-1-generic (recovery mode) 10 AstraLinux GNU/Linux, with Linux 5.4.0-110-generic 11 AstraLinux GNU/Linux, with Linux 5.4.0-110-generic (recovery mode) |
После внесения изменений в файл /etc/default/grub обновить параметры загрузчика:
Command |
---|
sudo update-grub |