Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Оглавление




Информация
titleДанная статья применима к:
  • Astra Linux Special Edition РУСБ.10015-01 и РУСБ.10015-10 (очередное обновление 1.7)
  • Astra Linux Special Edition РУСБ.10015-37 (очередное обновление 7.7)
  • Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.6)
  • Astra Linux Special Edition РУСБ.10015-16 исп. 1

  • Astra Linux Common Edition 2.12



Предупреждение

В общем случае, после внесения изменений в конфигурационные файлы загрузчика (файл /etc/default/grub или файлы в каталоге /etc/grub.d/) для вступления изменений в силу следует выполнить команду обновления загрузчика: 

Command
sudo update-grub

При этом будет переписан файл /boot/grub/grub.cfg, и все внесенные в него изменения будут утеряны.

Для внесения изменений в конфигурационные файлы требуются права суперпользователя (при включенном МКЦ - права суперпользователя с высоким уровнем целостности).


Установка и изменение пароля для меню загрузчика

Информация

Системный загрузчик GRUB2 поддерживает возможность задания паролей в открытом виде, и многие инструкции предлагают именно такой способ. В настоящей инструкции предлагается более безопасный способ задания пароля в виде хеша. Независимо от выбранного способа рекомендуется максимально ограничить доступ к файлу с паролем .

Для смены пароля системного загрузчика необходимо создать хеш нового пароля и заменить им старый хеш:

  1. Для генерации хеша выполнить команду и дважды ввести новый пароль:

    Command
    grub-mkpasswd-pbkdf2

    Полученный хеш (начиная со слова grub) скопировать в буфер (например, выделив его с помощью мыши, и нажав правую кнопку мыши выбрать "копировать");

  2. С помощью текстового редактора внести изменения в файл /etc/grub.d/07_password (создать такой файл, если его нет). Например, для редактирования с помощью редактора nano можно воспользоваться командой:

    Command
    sudo nano /etc/grub.d/07_password


  3. В результате редактирования должен получиться текст вида:

    Информация

    #!/bin/bash

    cat << EOF
    set superusers="
    username"
    password_pbkdf2
    username grub.pbkdf2.sha512.10000.9C319610666...........
    EOF

    Цветами условно обозначены имя пользователя (красный) и созданный кеш (зеленый), в реальном редакторе цветовых обозначений нет.

  4. Сохранить файл и выйти из редактора;

  5. Установить права доступа к созданному новому файлу, разрешив его выполнение и максимально ограничив чтение:

    Command
    sudo chmod 700 /etc/grub.d/07_password


  6. Для того, чтобы сделанные  изменения вступили в силу, обновить загрузчик командой:

    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.



Запрет загрузки в режиме восстановления. Таймаут ожидания выбора при загрузке.

Для того, чтобы запретить варианты загрузки в режиме восстановления:

  1. Открыть в редакторе файл /etc/default/grub:

    Command
    sudo nano  /etc/default/grub


  2. Раскомментировать строку:

    Информация
    GRUB_DISABLE_RECOVERY="true"


  3. Дополнительно в этом же файле можно уменьшить время ожидания при выборе варианта загрузки (по умолчанию - 5 секунд), например, совсем скрыв меню (в таком случае в меню НЕЛЬЗЯ будет попасть, зажав при загрузке клавишу Shift, и возможности выбора ОС/ядра не будет):

    Информация
    GRUB_TIMEOUT=0


  4. Для скрытия загрузчика с сохранением возможности переключения клавишей Shift на этап выбора ОС/ядра к параметру GRUB_TIMEOUT=0 добавить GRUB_HIDDEN_TIMEOUT=5:

    Информация
    GRUB_TIMEOUT=0
    GRUB_HIDDEN_TIMEOUT=5


  5. Сохранить изменения, выйти из редактора;

  6. Для того, чтобы эти изменения вступили в силу, обновить загрузчик командой:

    Command
    sudo update-grub


Пункты меню, позволяющие выбрать для загрузки режим восстановления, можно убрать из меню и путем редактирования файла /boot/grub/grub.cfg (см. ниже, но эти изменения не будут сохраняться после выполнения команды обновления загрузчика update-grub.

Запрет выбора загрузки ядра GENERIC

Для того, чтобы запретить все варианты загрузки, кроме варианта HARDENED:

  1.  С правами суперпользователя открыть в редакторе файл /boot/grub/grub/grub.cfg:

    Command
    sudo nano /boot/grub/grub.cfg


  2. Закомментировать ненужные блоки кода, начинающиеся с 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 

Пример вывода команды:

Блок кода
collapsetrue
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

Пример вывода команды:

Блок кода
collapsetrue
     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