Как легко установить пароль GRUB2?

Мне нужно установить пароль для GRUB2 в Ubuntu 14.04 LTS amd64. Настройка, которую я пытаюсь выполнить, заключается в том, чтобы опции [e] dit и [c] onsole были защищены паролем, но загрузка записей операционной системы (Ubuntu, Windows) не защищена.

Я изучил Grub2 / Passwords (он устарел, довольно хаотичен и, между прочим, едва читаем), и мне кажется, что мне нужно установить пароль суперпользователя и добавить опцию --unrestricted в пункты меню , Хорошо, но где именно мне добавить эту опцию --unrestricted?

Если в /boot/grub/grub.cfg, то это не самая умная идея, потому что этот файл перезаписывается при каждом запуске grub-update. Так что это не вариант для меня, потому что - давайте предположим, что - мне нравится менять фоновое изображение GRUB два раза в неделю. Более того, читаемость /boot/grub/grub.cfg далека от совершенства; до сих пор неясно, куда поставить опцию --unrestricted.

Если в элементах меню есть файлы в /etc/grub.d/*, то это даже хуже, чем редактирование /boot/grub/grub.cfg. Эти файлы довольно беспорядочные с точки зрения читабельности, поэтому редактировать их тем сложнее.

Есть ли простой и понятный способ настройки пароля GRUB2, как я описал? Может быть, какая-то блестящая документация, кроме той, на которую я ссылался в этом посте?

3
задан 19 July 2014 в 15:23

2 ответа

Согласно разделу по защите записей:

В настоящее время нет никакого автоматизированного метода добавляющих пользователей или определяющий пункты меню быть защищенным. Пользователь должен вручную отредактировать GRUB 2 сценария. Меню GRUB 2 является компиляцией исходных данных нескольких сценариев./etc/grub.d/10_linux файл ответственен за добавление Ubuntu по умолчанию ОС к меню GRUB 2. [...] большинство этих разделов посвящено редактированию сценариев по умолчанию, расположенных в/etc/grub.d/папке.

И в следующем разделе:

Меню GRUB 2 включает выборы для операционных систем кроме Ubuntu по умолчанию ОС через/etc/grub.d/30_os-prober сценарий. [...] Это включало бы другие установки Ubuntu и Linux, Windows, и т.д.

Сценарий 30_os-тестера ищет определенные типы операционных систем. Пользователь может внести изменения для всей ОС через единственную команду, или индивидуально типом ОС, как зарегистрировано ниже.

Так, кажется, что необходимо будет отредактировать файлы в /etc/grub.d/. По крайней мере, для добавления суперпользователя, Вы не должны редактировать один из тех файлов, но можете создать новый файл:

Информация о суперпользователе/пользователе и пароль не должны содержаться в/etc/grub.d/00_header файле. Информация может быть помещена в любой/etc/grub.d файл, пока тот файл включен в grub.cfg. Пользователь может предпочесть вводить эти данные в пользовательский файл, такой как/etc/grub.d/40_custom, таким образом, это не перезаписывается, должен пакет Личинки быть обновленным. При размещении информации в пользовательский файл не включайте "кошку <<EOF" и строки "EOF", поскольку содержание автоматически добавляется из этих файлов.

Эти абзацы остаются релевантными, пока в официальной документации GRUB не говорится иначе:

Программа личинки-mkconfig еще не имеет встроенной поддержки генерации конфигурационных файлов с аутентификацией.

(Независимо от того, что это, как предполагается, означает.)


До Ubuntu 12.04

Вот устаревшие инструкции для защиты записей меню:

В/etc/grub.d/10_linux найдите следующую строку:

printf "menuentry '${title}' ${CLASS} {\n" "${os}" "${version}"

Добавить --users '' :

printf "menuentry '${title}' ${CLASS} --users '' {\n" "${os}" "${version}"

Для всех записей в 30_os-prober:

sudo sed 's/--class os /--class os --users /' -i /etc/grub.d/30_os-prober

Пакеты Ubuntu не перечисляют Ubuntu 12.10, таким образом, я не уверен если 12,10 использования старый метод или новый.

Ubuntu 13.04 и позже

Теперь, 10_linux использование файла echo вместо printf:

echo "menuentry '$(echo "$title" | grub_quote)' ${CLASS} \$menuentry_id_option 'gnulinux-$version-$type-$boot_device_id' {" | sed "s/^/$submenu_indentation/"

И 30_os-prober использование файла cat и heredocs:

# The minix entry
cat << EOF
menuentry "${LONGNAME} (on ${DEVICE}, Multiboot)" {
EOF
# The hurd entry
cat << EOF
menuentry '$(echo "${LONGNAME} $onstr" | grub_quote)' --class hurd --class gnu --class os \$menuentry_id_option 'osprober-gnuhurd-/boot/gnumach.gz-false-$(grub_get_device_id "${DEVICE}")' {
EOF

Таким образом, можно придерживаться --user "" отделитесь где-нибудь перед концами menuentry (прежде чем фигурная скобка откроется).

Не забудьте копировать любые файлы, которые Вы изменяете и выполняете update-grub после модификации.

3
ответ дан 19 July 2014 в 15:23

Настройте superusers. Чтобы сделать это, например, добавляет следующие строки к /etc/grub.d/00_header:

# Support user protection on entries
cat << EOF
set superusers="admin"
password_pbkdf2 admin grub.pbkdf2.sha512.10000.8E51188BE7DF732DDF102C918DEC152087558E04DA843B4A74C3EA8374BAB1ECA493399D62E3F2779F55C5BE2E8B65B8636113A99C09BFB892DB64626337904C.3016474FE6B420DBE6371B41D9BE8471B135CDF4BE674AC1265D3BA123CD9E459E960AEC199AB8C7C1C1A6BAF45314C64591E85E404AB54F4777E032A50CC731
EOF

Обновление зашифрованный пароль с помощью вывода grub-mkpasswd-pbkdf2 команда. В нашем примере, что необходимо изменить, следующая информация:

grub.pbkdf2.sha512.10000.8E51188BE7DF732DDF102C918DEC152087558E04DA843B4A74C3EA8374BAB1ECA493399D62E3F2779F55C5BE2E8B65B8636113A99C09BFB892DB64626337904C.3016474FE6B420DBE6371B41D9BE8471B135CDF4BE674AC1265D3BA123CD9E459E960AEC199AB8C7C1C1A6BAF45314C64591E85E404AB54F4777E032A50CC731

Редактирование /etc/grub.d/10_linux файл и ищут строку 129 (в Ubuntu 14.04 LTS). В его нетронутой форме это должно быть похожим на следующее:

echo "menuentry '$(echo "$os" | grub_quote)' ${CLASS} \$menuentry_id_option 'gnulinux-simple-$boot_device_id'     {" | sed "s/^/$submenu_indentation/"

Здесь, добавьте --unrestricted опция после Переменной класса для завершения строки конфигурации:

echo "menuentry '$(echo "$os" | grub_quote)' ${CLASS} --unrestricted \$menuentry_id_option 'gnulinux-simple-$boot_device_id' {" | sed "s/^/$submenu_indentation/"

Восстанавливают /boot/grub/grub.cfg. Чтобы сделать это, Вы работаете эти sudo update-grub команда.

Перезагружают систему и попытку.

Теперь у Вас должна быть конфигурация где:

  • основная запись операционной системы Ubuntu будет обычно загружаться, но никто кроме эти superusers не будет в состоянии отредактировать связанную запись в списке.

  • Только эти superusers будет в состоянии загрузить и отредактировать все другие записи в списке.

<час>

См. также:

https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/System_Administrators_Guide/sec-GRUB_2_Password_Protection.html

0
ответ дан 19 July 2014 в 15:23

Другие вопросы по тегам:

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