Мне нужно установить пароль для 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, как я описал? Может быть, какая-то блестящая документация, кроме той, на которую я ссылался в этом посте?
Согласно разделу по защите записей:
В настоящее время нет никакого автоматизированного метода добавляющих пользователей или определяющий пункты меню быть защищенным. Пользователь должен вручную отредактировать 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 еще не имеет встроенной поддержки генерации конфигурационных файлов с аутентификацией.
(Независимо от того, что это, как предполагается, означает.)
Вот устаревшие инструкции для защиты записей меню:
В/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 использования старый метод или новый.
Теперь, 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
после модификации.
Настройте 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
будет в состоянии загрузить и отредактировать все другие записи в списке.
См. также: