최근에 공식을 다운로드했습니다.centos/7 Vagrant 클라우드 가상 머신. 키를 사용하여 재부팅하는 동안 GRUB2 메뉴에 액세스하려고 시도하는 동안 e사용자 이름 + 비밀번호를 묻는 메시지가 표시되었습니다.
이 가상 머신의 공식 페이지 어디에서도 이 참조를 찾을 수 없습니다.이 소식을 알리는 블로그 게시물, 다음 git 저장소에도 없습니다.
어쩌면 어느 시점에서 이것을 수정하여 GRUB2 부팅 메뉴를 보호하는 데 사용한 사용자 이름과 비밀번호를 더 이상 기억하지 못할 수도 있습니다.
두 경우 모두, 이 질문을 더 자세히 살펴보지 않고 GRUB2의 자격 증명을 내가 원하는 대로 간단히 변경하려면 어떻게 해야 합니까?
답변1
Vagrant VM을 시작할 때 일반적으로 루트 액세스 권한이 있으므로 sudo
다음과 같이 간단히 로그인하여 루트가 될 수 있습니다.
$ vagrant ssh
$ sudo -Es
루트 액세스 권한을 얻으면 두 가지 방법 중 하나로 자격 증명을 원하는 대로 재설정할 수 있습니다.
RHEL 및 CentOS 7.2+ 및 Fedora
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
이 파일을 찾아 CentOS 기반 배포판에서 GRUB2가 어떻게 사용되는지 확인할 수 있습니다 /etc/grub.d
.
$ 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"가 됩니다. 좋습니다. 가상 머신을 다시 시작하고 우리가 제공한 "root" 자격 증명과 비밀번호를 사용해 보면 됩니다 grub2-setpassword
.
이제 메뉴에 들어갈 수 있습니다:
우분투 16.04+
스크립트를 제공하지 않는 다른 배포판에서는 grub2-setpassword
프로세스가 좀 더 복잡하지만 끔찍하지는 않습니다.
1. 암호화된 비밀번호 생성
비밀번호를 암호화하려면 GRUB2 도구를 사용해야 합니다.
$ grub-mkpasswd-pbkdf2
Enter password:
Reenter password:
PBKDF2 hash of your password is grub.pbkdf2.sha512.10000.465B5EE2D2F6A767304EB397D6D97C70BC38653F95AFE58B24F190D5DABB0143920F736C125B91FB9F298AFF3D0F8FBBFB8228D5C8C9DD371ADBB1044CC80BFC.52D87AFD47A5BE2D7B6CF755D26CD5F481557DBCF5E725ABA44BF003A2970D3F775E8657428EDC201D86A3DF07D7A8109AFD5764EA058BE94D840F42ED17C3E2
2. GRUB2 구성에 비밀번호 추가
그런 다음 해당 명령의 출력을 가져와 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 ...
)을 변경하세요.
3. GRUB2 재구축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 ###
...