Как заблокировать определенную операционную систему в grub

exec /home/minecraft/server/startup-server.sh > /dev/null 2>&1 & echo $!

дает вам PID startup-server.sh, который закрывается почти сразу. Но вам нужен PID

/usr/bin/java -Xmx4096M -Xms4096M -jar minecraft_server.jar nogui

Для вашего подхода к работе нужно

exec /usr/bin/java -Xmx4096M -Xms4096M -jar minecraft_server.jar nogui

Кроме того, if [ -f $PID_PATH_NAME ]недостаточно. Вы всегда должны проверять, что процесс все еще существует и что он правильный.

Вместо этого может иметь смысл использовать что-то вроде startproc.

3
09.12.2019, 00:21
1 ответ

Настройка пользователя-супервизора и пароля ограничит доступ любого другого пользователя к элементам меню, редактированию элементов меню и использованию консоли grub. Добавление --unrestrictedкmenuentryпозволяет любому пользователю использовать этот пункт меню без ввода имени пользователя/пароля, а добавление --usersсо списком имен пользователей позволяет дополнительным пользователям получить доступ к menuentry.

Для минимальной настройки вам необходимо добавить суперпользователя с паролем и добавить --unrestrictedк menuentryв /etc/grub.d/30_os_prober, который генерирует записи меню Windows.

  1. Отредактируйте /etc/grub.d/30_os-prober, найдите menuentry, отвечающую за записи Windows, и добавьте --unrestrictedв этот пункт меню. В моем случае я искал строку Windowsи редактировал следующую строку menuentry. Отредактированный блок теперь выглядит так:

          cat << EOF
    menuentry '$(echo "${LONGNAME} $onstr" | grub_quote)' --unrestricted $CLASS --class os \$menuentry_id_option 'osprober-chain-$(grub_get_device_id "${DEVICE}")' {
    EOF
    
  2. Добавьте свои пароли в конец/etc/grub.d/30_os-prober:

    cat << EOF
    set superusers="freddy"
    password freddy 1234
    EOF
    

    Обратите внимание, что не имеет значения, какой файл конфигурации в /etc/grub.d/мы используем для наших паролей. Вместо этого мы могли бы также использовать 00_headerили 10_linux.

    Если вы хотите зашифровать свой пароль, запустите grub-mkpasswd-pbkdf2, дважды введите свой пароль и используйте сгенерированную строку grub.pbkdf2.sha512.10000.<a_very_long_string>в качестве пароля. Ввод пароля должен начинаться с password_pbkdf2вместо password:

    .
    password_pbkdf2 freddy grub.pbkdf2.sha512.10000.68B90AFC[...]86858AF939
    
  3. Выполнить

    sudo update-grub
    

    , чтобы обновить grub и проверить, имеет ли сгенерированная запись Windows в /boot/grub/grub.cfgфлаг --restricted. Сгенерированный блок30_os-prober-должен выглядеть примерно так:

    ### BEGIN /etc/grub.d/30_os-prober ###
    menuentry 'Windows 10 (on /dev/sda1)' --unrestricted --class windows --class os $menuentry_id_option 'osprober-chain-A25E43975E436361' {
        insmod part_msdos
        insmod ntfs
        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  A25E43975E436361
        else
          search --no-floppy --fs-uuid --set=root A25E43975E436361
        fi
        parttool ${root} hidden-
        drivemap -s (hd0) ${root}
        chainloader +1
    }
    set superusers="freddy"
    password freddy 1234
    ### END /etc/grub.d/30_os-prober ###
    
  4. Перезагрузите и проверьте.

Ссылки по теме:

2
27.01.2020, 21:24

Теги

Похожие вопросы