본문 바로가기

Cloud/Openstack

[openstack] 이미지의 root계정 패스워드 변경하기

이미지에 root 패스워드 변경하는법은 다양하지만 여기선 libguestfs-tools 라는 것을 사용해서 하겠다!

이미지는 우분투 이미지를 사용

 

우분투 이미지 다운


wget을 이용하여 ubuntu-18.04 클라우드 이미지를 다운로드 한다.

$ wget https://cloud-images.ubuntu.com/releases/bionic/release/ubuntu-18.04-server-cloudimg-amd64.img

 

virt-cunstomize를 이용하여 이미지 편집


# ubuntu
$ sudo apt install libguestfs-tools

# centos
$ sudo yum install libguestfs-tools

 

아래와 같이 Finishing off 가 뜨면 패스워드 변경이 완료가 되었다!

$ virt-customize -a $CLOUD_IMAGE --root-password password:$PASSWD
[ 0.0] Examining the guest ... [ 44.6] Setting a random seed
virt-customize: warning: random seed could not be set for this type of
guest
[ 44.7] Setting the machine ID in /etc/machine-id
[ 44.7] Setting passwords
[ 71.6] Finishing off

 

 

virt-customize 오류 및 해결방법


명령어를 실행하면 아래와 같이 오류가 발생하는 경우가 있다.

$ virt-customize -a $CLOUD_IMAGE --root-password password:$PASSWD
[ 0.0] Examining the guest ... virt-customize: error: libguestfs error: /usr/bin/supermin exited with
error status 1.
To see full error messages you may need to enable debugging.
Do: export LIBGUESTFS_DEBUG=1 LIBGUESTFS_TRACE=1 ………
If reporting bugs, run virt-customize with debugging enabled and include
the complete output:
 virt-customize -v -x [...]

 

해결전에 먼저 virt-customize가 무엇을 하는놈인지 보자

 

virt-customize는 가상 머신 수정할 때 사용하는 명령어이다.

또한 이미지도 수정이 가능한데 이미지를 수정할 때 QEMU로 이미지의 커널을 부팅할 때 ‘vmlinuz’파일을 사용한다.

 

그럼 저 파일의 권한을 살펴보자.

권한을 보면 root만 사용가능하게 설정이 되어있다.

$ ls -l /boot/vmlinuz*
-rw------- 1 root root ... /boot/vmlinuz-4.15.0-147-generic
-rw------- 1 root root ... /boot/vmlinuz-4.15.0-159-generic
-rw------- 1 root root ... /boot/vmlinuz-4.15.0-161-generic

 

그래서 일반 사용자가 사용하게 되면 퍼미션 에러가 발생한다.

해결방법은 아래 처럼 권한을 변경해주면 되지만, 그것은 보안문제 안좋기 때문에 sudo를 사용하거나 root사용자로 실행하는것이 옳다고 본다.

방법 1 (위험)
$ sudo chmod 0644 /boot/vmlinuz*

방법 2
$ sudo virt-customize -a $CLOUD_IMAGE --root-password password:$PASSWD

방법 3 (root사용자)
# virt-customize -a $CLOUD_IMAGE --root-password password:$PASSWD