Задача: необходимо ограничить доступ к загрузки ОС Windows XP, установленной второй системой к Ubuntu Linux 10.10 (дистрибутив может быть любым, главное чтоб загрузчик совпадал).
Сначала необходимо получить хеш пароля при помощи утилиты grub-mkpasswd-pbkdf2:
1 2 3 4 5 6 7 | $ grub-mkpasswd-pbkdf2 Enter password: ******** Reenter password: ******** Your PBKDF2 is grub.pbkdf2.sha512.10000.ADA06E9D04D86053296B7B8614D7E1C32BAD55A76AD37F1228193C3B53FBD 116BD9BC7ED9F85890DCEA5BA597AA5273898C10355C0CE414994959E5315404E2E.0818FF69803AE785C5842FCD3B7 319E8E4E9A83665616C07ADA188F33DCF713C587E9F66781785326711A2786D4249249AAE32C66B2BAEBEEFD098DF67 E74F59 |
Запись типа:
«grub.pbkdf2.sha512.10000.ADA06E9D04D86053296B7B8614D7E1C32BAD55A76AD37F1228193C3B53FBD116BD9BC7E
D9F85890DCEA5BA597AA5273898C10355C0CE414994959E5315404E2E.0818FF69803AE785C5842FCD3B7319E8E4E9A8
3665616C07ADA188F33DCF713C587E9F66781785326711A2786D4249249AAE32C66B2BAEBEEFD098DF67E74F59 »
и есть наш зашифрованный пароль.
Далее создаем файл конфигурации паролей, и редактируем его в своем любимом текстовом редакторе до следующего вида:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | $ sudo touch /etc/grub.d/05_password [sudo] password for damir: # sudo vi /etc/grub.d/05_password echo "Setting password protection..." >&2 cat << EOF set superusers="admin" password_pbkdf2 admin grub.pbkdf2.sha512.10000.ADA06E9D04D86053296B7B8614D7E1C32BAD55A76A D37F1228193C3B53FBD116BD9BC7ED9F85890DCEA5BA597AA5273898C10355C0CE414994959E5315404E2E.08 18FF69803AE785C5842FCD3B7319E8E4E9A83665616C07ADA188F33DCF713C587E9F66781785326711A2786D4 249249AAE32C66B2BAEBEEFD098DF67E74F59 password_pbkdf2 damir grub.pbkdf2.sha512.10000.F9F491F196D488403B3C1A5FE76608F02DE651DEDF 779A8FD32C75EC152222723173B16B9E6B91B83040E19F89C5D49CCD26A1726DD08AAB9CC74F1AD7C1B21D.6 EBB33BA773CBFB57CE85A567D1B758336896B055D9F17EDB9914A0DC3296B34A3678278B568A069E0C24BAD 61E2043F8F974067A44D1E97D84056770C8275CF EOF |
Немного поясню конфиг: $ echo «Setting password protection…» >&2 — это комментарий для наглядности, будет выводиться при обновлении grub, set superusers=»admin» — задаем имя супер пользователю, он сможет редактировать любые пункты меню, дальше идет строка отвечающая за самого пользователя, обратите внимание строка одна (password_pbkdf2 admigrub.pbkdf2.sha512.10000.ADA06E9D04D86053296B7B8614D7E1C32BAD55A76AD37F1
228193C3B53FBD116BD9BC7ED9F85890DCEA5BA597AA5273898C10355C0CE414994959E5315404E2E.0818FF698
03AE785C5842FCD3B7319E8E4E9A83665616C07ADA188F33DCF713C587E9F66781785326711A2786D4249249AAE32
C66B2BAEBEEFD098DF67E74F59 ), хоть она и написана в несколько строчек — это крайне важно. Я задал два пользователя admin и damir, их можно сделать и больше если в этом есть необходимость, соответственно для каждого создавать свой хеш пароля, так как мы это сделали в самом начале.
Уберем право на чтение файла с паролем для посторонних, и добавим необходимых прав:
228193C3B53FBD116BD9BC7ED9F85890DCEA5BA597AA5273898C10355C0CE414994959E5315404E2E.0818FF698
03AE785C5842FCD3B7319E8E4E9A83665616C07ADA188F33DCF713C587E9F66781785326711A2786D4249249AAE32
C66B2BAEBEEFD098DF67E74F59 ), хоть она и написана в несколько строчек — это крайне важно. Я задал два пользователя admin и damir, их можно сделать и больше если в этом есть необходимость, соответственно для каждого создавать свой хеш пароля, так как мы это сделали в самом начале.
Уберем право на чтение файла с паролем для посторонних, и добавим необходимых прав:
1 | $ sudo chmod u+x,go-rw /etc/grub.d/05_password |
И обновим конфиг GRUB 2:
1 2 3 4 5 6 | $ sudo update-grub Generating grub.cfg ... Setting password protection... Found linux image: /boot/vmlinuz Found initrd image: /boot/initrd.img done |
На данный момент при загрузке и попытке редактировать загрузчик по средствам клавиши «e» нас спросят о пароле, но нам этого не достаточно мы хотим чтоб стандартный линукс загружался сам, без вмешательства, а не православная Windows только при вводе пароля! Для этого необходимо изменить файл /etc/grub.d/30_os-prober, он отвечает как раз за загрузку не стандартных ОС, в том числе и Windows. Открываем его в любимом редакторе и ищем строчки начинающиеся с «menuentry» и приводим их к следующему виду:
1 2 | $ sudo vi /etc/grub.d/30_os-prober menuentry "${LONGNAME} (${2}-bit) (on ${DEVICE})" --users damir { |
То есть добавляем «—users damir» что приведет к тому, что пользователь damir сможет загружать Windows после ввода пароля, а так же суперпользователь admin! Если мы введем «—users admin» то только суперпользователь сможет использовать данный пункт меню загрузки. ВНИМАНИЕ таких строк несколько в частности в загрузчики Ubuntu 10.10 их четыре, соответственно во все четыре нужно прописать пользователей.
Еще раз обновляем GRUB2 и перезагружаемся.
1 2 3 4 5 6 7 | $ sudo update-grub Generating grub.cfg ... Setting password protection... Found linux image: /boot/vmlinuz Found initrd image: /boot/initrd.img done $ sudo reboot |
Есть у нового загрузчика один нюанс, после появления в его меню дополнительной системы (в нашем случае Windows XP), grub2 всегда показывает меню с возможностью выбора системы. Меня это не устроило пришлось лезть в исходники скриптов формирования grub.cfg и принимать меры. Итак создаем файл «31_sleep» и приводим его к следующему виду:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | $ sudo touch /etc/grub.d/31_sleep $ sudo vi /etc/grub.d/31_sleep echo "Setting Sleep..." >&2 cat <<EOF if [ "x\${timeout}" != "x-1" ]; then if keystatus; then if keystatus --shift; then set timeout=-1 else set timeout=0 fi else if sleep$verbose --interruptible 3 ; then set timeout=0 fi fi fi EOF |
Выставляем необходимые права и разрешения:
1 | $ sudo chmod u+x,go-rw /etc/grub.d/05_password |
Проверяем следующие параметры в файле «/etc/default/grub»
1 2 3 4 | $ sudo vi /etc/default/grub GRUB_HIDDEN_TIMEOUT=0 GRUB_HIDDEN_TIMEOUT_QUIET=true GRUB_TIMEOUT=2 |
И последний раз обновляем GRUB2 и перезагружаемся.
1 2 3 4 5 6 7 | $ sudo update-grub Generating grub.cfg ... Setting password protection... Found linux image: /boot/vmlinuz Found initrd image: /boot/initrd.img done $ sudo reboot |
В идеале должно получиться следующее: без вмешательства загружается Ubuntu (или любой другой, ваш любимый Linux дистрибутив) не отображая ни каких меню для выбора OS, при удерживании Shift отображается меню в котором можно выбрать Windows XP для загрузки последней необходимо ввести логин и пароль. В принципе то, что хотели получить, получили!
Использовал:
MaDaGa 13.12.2010
Отличная и полезная статья, спасибо! 🙂
о, да, круто а то так и из под рута можно в линукс войти при помощи клаваиши е
Уведомление: Пароль на Grub2 | RSKL RaSKoL