最近、公式の centos/7 Vagrant Cloud VM をダウンロードしました。再起動中にGRUB2メニューにアクセスしようとすると、 e キー、私はユーザー名とパスワードの入力を求められました。
私はこれがこのVMの公式ページの それを発表しているブログ投稿 、またはこれらのgitリポジトリのいずれかで参照されている箇所を見つけることに失敗しました:
おそらく私はある時点でこれを変更し、GRUB2のブートメニューを保護するために使用されたユーザー名とパスワードを思い出せなくなりました。
どちらの場合も、これ以上探すのではなく、GRUB2の資格情報を必要なものに変更するにはどうすればよいですか?
通常、Vagrant VMを起動するとSudo
を介してrootにアクセスできるため、単にログインして次のようにrootになることができます。
$ vagrant ssh
$ Sudo -Es
Rootになったら、2つの方法のいずれかで資格情報を必要なものにリセットできます。
RHELとCentOS 7.2以降とFedoraから、ヘルパースクリプト/ツールgrub2-setpassword
が含まれています。これは、これを実行するプロセスを大幅に簡素化します。
これを使用するには、次のようにします。
$ grub2-setpassword
Enter password:
Confirm password:
$
上記を実行すると、このファイルにパスワードが自動的に設定されます:/boot/grub2/user.cfg
:
$ cat /boot/grub2/user.cfg
GRUB2_PASSWORD=grub.pbkdf2.sha512.10000.5A95A11398D5DEAA9B205DCEA37E0FDCC069CF6D0C398E8C9FF2ED1D8DE072DDE1D916F955266C306AAC7CA62E0D29A7C6558F3B29E40008289DBE857B8354CE.DD410AA2E5D6495BA723147046B88B89A585656AF4298F07CBC93E7A4F73713A824AE1F3448F837809B6655861A1BA5F0FB615206470E4228E57F7BCF11442A3
次のように/etc/grub.d
で検索することにより、CentOSベースのディストリビューションでGRUB2がこのファイルをどのように使用するかを確認できます。
$ grep -l user.cfg /etc/grub.d/*
/etc/grub.d/01_users
そのファイルの内容:
$ cat /etc/grub.d/01_users
#!/bin/sh -e
cat << EOF
if [ -f \${prefix}/user.cfg ]; then
source \${prefix}/user.cfg
if [ -n "\${GRUB2_PASSWORD}" ]; then
set superusers="root"
export superusers
password_pbkdf2 root \${GRUB2_PASSWORD}
fi
fi
EOF
デフォルトのユーザーは「root」になります。 VM=を再起動し、grub2-setpassword
に提供したパスワードを使用して資格情報 'root'を使用してみます。
これでメニューに入ります:
スクリプトgrub2-setpassword
を提供しない他のディストリビューションでは、プロセスは少し複雑ですが、ひどいものではありません。
パスワードを暗号化するには、GRUB2ツールを使用する必要があります。
$ grub-mkpasswd-pbkdf2
Enter password:
Reenter password:
PBKDF2 hash of your password is grub.pbkdf2.sha512.10000.465B5EE2D2F6A767304EB397D6D97C70BC38653F95AFE58B24F190D5DABB0143920F736C125B91FB9F298AFF3D0F8FBBFB8228D5C8C9DD371ADBB1044CC80BFC.52D87AFD47A5BE2D7B6CF755D26CD5F481557DBCF5E725ABA44BF003A2970D3F775E8657428EDC201D86A3DF07D7A8109AFD5764EA058BE94D840F42ED17C3E2
次に、そのコマンドの出力grub.pbkdf2.sha512.10000.....
を取得し、それをファイルにコピーして貼り付けます。
$ cat /etc/grub.d/40_custom
#!/bin/sh
exec tail -n +3 $0
# This file provides an easy way to add custom menu entries. Simply type the
# menu entries you want to add after this comment. Be careful not to change
# the 'exec tail' line above.
set superusers="root"
password_pbkdf2 root grub.pbkdf2.sha512.10000.465B5EE2D2F6A767304EB397D6D97C70BC38653F95AFE58B24F190D5DABB0143920F736C125B91FB9F298AFF3D0F8FBBFB8228D5C8C9DD371ADBB1044CC80BFC.52D87AFD47A5BE2D7B6CF755D26CD5F481557DBCF5E725ABA44BF003A2970D3F775E8657428EDC201D86A3DF07D7A8109AFD5764EA058BE94D840F42ED17C3E2
注:ユーザー名を「root」に設定します。ユーザーの名前は何でもかまいません。変更する場合は、必ず両方の行で変更してください(superusers="root"
&password_pbkdf2 root ...
)。
grub.cfg
次に、grub.cfg
を再生成する必要があります。
$ grub-mkconfig -o /boot/grub/grub.cfg
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-4.4.0-130-generic
Found initrd image: /boot/initrd.img-4.4.0-130-generic
done
これにより、/etc/grub.d
のすべてのコンテンツが取得され、新しいgrub.cfg
に組み込まれます。したがって、40_custom
のgrub.cfg
セクションは、次のようになります。
$ cat /boot/grub/grub.cfg
...
### BEGIN /etc/grub.d/40_custom ###
# This file provides an easy way to add custom menu entries. Simply type the
# menu entries you want to add after this comment. Be careful not to change
# the 'exec tail' line above.
### END /etc/grub.d/40_custom ###
...
これに:
$ cat /boot/grub/grub.cfg
...
### BEGIN /etc/grub.d/40_custom ###
# This file provides an easy way to add custom menu entries. Simply type the
# menu entries you want to add after this comment. Be careful not to change
# the 'exec tail' line above.
set superusers="root"
password_pbkdf2 root grub.pbkdf2.sha512.10000.465B5EE2D2F6A767304EB397D6D97C70BC38653F95AFE58B24F190D5DABB0143920F736C125B91FB9F298AFF3D0F8FBBFB8228D5C8C9DD371ADBB1044CC80BFC.52D87AFD47A5BE2D7B6CF755D26CD5F481557DBCF5E725ABA44BF003A2970D3F775E8657428EDC201D86A3DF07D7A8109AFD5764EA058BE94D840F42ED17C3E2
### END /etc/grub.d/40_custom ###
...