Ставим пароль на загрузку Windows XP в GRUB2.

Задача: необходимо ограничить доступ к загрузки ОС 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, их можно сделать и больше если в этом есть необходимость, соответственно для каждого создавать свой хеш пароля, так как мы это сделали в самом начале.
Уберем право на чтение файла с паролем для посторонних, и добавим необходимых прав:
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

Ставим пароль на загрузку Windows XP в GRUB2.: 3 комментария

  1. Уведомление: Пароль на Grub2 | RSKL RaSKoL

Добавить комментарий