리눅스에서는 일반 사용자와 슈퍼유저 모두 비밀번호 인증을 통해 서비스에 접근할 수 있습니다. 일반 사용자가 자신의 비밀번호를 잊어버렸다면, 슈퍼유저는 터미널에서 간단히 해당 계정의 비밀번호를 재설정해 줄 수 있습니다. 하지만 만약 슈퍼유저(루트 사용자) 본인이 비밀번호를 분실하면 어떻게 될까요? 이 경우 로그인 화면으로 부팅하기 전에 비밀번호를 복구해야 합니다. 참고로 이 방법은 물리적으로 리눅스 호스트에 접근할 수 있는 악의적인 사용자 역시 시스템 전체를 장악할 수 있음을 의미합니다. 이 글에서는 리눅스에서 분실한 루트 비밀번호를 복구하는 두 가지 방법을 소개합니다.
참고: 루트 비밀번호를 재설정하는 방법은 대부분의 배포판에서 거의 동일합니다. 여기서는 우분투(Ubuntu)를 기준으로 과정을 설명하며, 편의상 '루트 비밀번호'라는 용어를 사용하지만 슈퍼유저 비밀번호와 같은 의미로 이해하시면 됩니다.
1. GRUB 메뉴에서 루트 비밀번호 재설정하기
1. 루트 비밀번호를 복구하려면 먼저 리눅스 호스트를 재부팅해야 합니다. 루트 비밀번호를 잊어버렸다고 가정합니다.
2. GRUB 화면이 나타나면 빠르게 아래 방향키와 Enter 키를 눌러 "*Advanced options for GNU/Linux"(GNU/Linux 고급 옵션) 항목을 선택합니다.
3. 이제 e 키를 눌러 부팅 명령을 편집합니다.
파일 시스템을 읽기 전용(read-only) 모드에서 읽기-쓰기(read-write) 모드로 변경해야 합니다. "linux"로 시작하는 줄을 찾아 ro를 rw로 바꾸고, 줄 끝에 init=/bin/bash를 추가합니다.
4. F10 키를 누릅니다. 그러면 프롬프트가 표시된 화면으로 진입합니다.
5. 루트 파일 시스템을 읽기-쓰기 모드로 다시 마운트합니다:
mount -n -o remount,rw /
6. 이제 다음 명령으로 분실한 루트 비밀번호를 재설정할 수 있습니다:
passwd root
작업이 끝나면 다음을 입력합니다:
exec /sbin/init
이렇게 하면 프롬프트가 종료되고 컴퓨터가 재부팅됩니다.
2. Live CD를 이용해 루트 비밀번호 재설정하기
리눅스 Live CD/USB가 있다면 이를 부팅하여 루트 비밀번호를 재설정할 수 있습니다.
1. 최신 버전의 우분투를 다운로드한 후, 이를 이용해 부팅 가능한 Live CD/USB를 만듭니다. 하드 드라이브가 아닌 이동식 드라이브로 시스템을 부팅합니다.
2. 화면에서 "Try Ubuntu(우분투 사용해 보기)"를 선택합니다. 그러면 Live CD 데스크톱으로 진입합니다.
3. 터미널을 열고 다음 명령을 입력해 루트 권한을 획득합니다:
sudo su
4. 다음 명령으로 하드 디스크 파티션의 위치를 확인합니다:
fdisk -l
대부분의 경우 "/dev/sda1"이지만, 하드 디스크 파티션 구성에 따라 달라질 수 있습니다.
5. 복구할 시스템의 하드 디스크 파티션을 다음 명령으로 마운트합니다:
mkdir /mnt/recover
mount /dev/sda1 /mnt/recover
6. 이제 "/mnt/recover" 디렉터리 안으로 들어가야 합니다. 즉, 일반 리눅스 파일 시스템에 있는 것처럼 가장하는 것인데, 이를 흔히 chroot라고 부릅니다.
chroot /mnt/recover
7. 다음 명령으로 리눅스 루트 비밀번호를 재설정합니다:
passwd root
8. 완료되면 chroot 셸에서 빠져나옵니다:
exit
9. 루트 파티션을 마운트 해제합니다:
umount /mnt/recover
그리고 루트 세션에서도 빠져나옵니다:
exit
10. 마지막으로 Live CD를 제거하고 리눅스 시스템으로 재부팅합니다.
리눅스에서 루트 비밀번호를 변경하는 것은 추가로 거쳐야 할 단계들에 대한 부담감만 극복하면 생각보다 어렵지 않습니다. 다만, 컴퓨터에 물리적으로 접근할 수 있는 사람이라면 누구나 이 방법으로 슈퍼유저 또는 루트 비밀번호를 재설정할 수 있다는 점에 유의하세요. 이런 권한에 대한 접근을 더 엄격하게 관리하고 싶다면, 하드 디스크를 암호화하여 쉽게 부팅하거나 마운트할 수 없도록 만드는 것이 좋습니다.
자주 묻는 질문
1. 전체 디스크 암호화는 루트 비밀번호 변경에 어떤 영향을 주나요?
디스크 암호화는 리눅스에서 문제를 복구할 때 작업을 복잡하게 만들 수 있지만, 루트 비밀번호를 변경하는 경우에는 큰 영향이 없습니다. 디스크에 접근할 수만 있다면 위에서 설명한 대로 GRUB에서 여전히 손쉽게 변경할 수 있습니다.
유일한 차이점은 외부인이 몰래 시스템에 진입해 같은 작업을 수행할 수 없다는 것입니다.
2. 루트 비밀번호와 슈퍼유저 비밀번호의 차이는 무엇인가요?
대부분의 경우 루트 사용자와 슈퍼유저는 동일합니다. 따라서 루트 비밀번호를 변경하면 슈퍼유저 비밀번호도 함께 변경됩니다. 우분투에서 슈퍼유저는 사용자 ID(UID)가 0인 계정을 의미합니다. 만약 UID 0을 가진 다른 사용자를 별도로 설정했다면, 이 경우 루트 비밀번호와 슈퍼유저 비밀번호는 서로 다르게 관리됩니다.
3. 비밀번호에 만료일을 설정할 수 있나요?
네, 가능합니다! -x 플래그를 사용하면 특정 사용자의 비밀번호 유효 기간을 설정할 수 있습니다. 예를 들어 passwd -x 30 root를 입력하면 루트 비밀번호가 30일간만 유효하며, 기간이 만료되면 반드시 비밀번호를 변경해야 합니다.
추가로 -w 플래그를 사용하면 비밀번호 변경 기한보다 며칠 전부터 미리 경고를 받을지 설정할 수 있습니다. 예를 들어 passwd -w 7 root를 입력하면 -x 플래그로 설정한 만료일 일주일 전부터 루트 비밀번호 변경 경고 메시지를 받게 됩니다.
리눅스를 더 깊이 탐구하고 싶으신가요? 리눅스에서 블루투스를 설정하는 가이드도 확인해 보세요. 또한 자신만의 리눅스 배포판을 만드는 데 유용한 도구 목록도 함께 살펴볼 수 있습니다.