[솔라리스 9] root 계정 password 복구

갑자기 예상치 못한 오류로 부팅이 안되거나 OS가 부팅이 안되서 오류를 수정을 할 수 없는 상태가 된다면 윈도우처럼 안전모드 부팅이 있다.
이 상황은 어떤 설정파일을 수정한 이유에 정상적인 부팅이 되지 않는 상태가 그런경우다.

아래의 상황은 root 의 패스워드를 변경했는데 기억이 나질 않아서 password 를 초기화 하는 상황이다.

복구 시나리오는 아래와 같다.
1. cd boot
2. single user mode 실행
3. root slice(partition) 마운트
4. shadow 파일 수정
5. 재부팅 후 root 패스워드 재설정



이 방법에는 Solaris 1번 CD가 필요하다.


1. 일단 CD로 부팅이 가능하도록 BIOS 에서 CD 부팅이 최우선이 되도록 수정 후 저장하고 종료한다.


 F2 를 눌러서 진행한다.


아래의 화면이 나올때까지 진행을 계속한다.
아래에서는 boot를 어떤 방식으로 할건지 설정하는데 방향키로 이동하고 space bar 로 X를 CD를 체크후 F2 를 눌러 진행한다.





SINGLE USER MODE

single User Mode 로 진입하기 위해서는 
b -s 를 입력한다.
: b -s


 

아래는 single user mode 으로 진입을 한 상태이다. 윈도우의 안전모드와 같은 상태다.
지금의 상태는 CD를 이용하여 부팅 했으므로 실제 OS가 설치된 디스크로 부팅을 한게 아님을 상기하고 실제 OS가 설치된 장치를 마운트 해야 한다.


만약 OS 가 설치된 장치의 이름을 알고 있다면 아래의 과정은 건너뛰어도 된다.
(만약 직접 OS를 설치했다면 장치의 이력을 기록화 하자.)
일단 format 명령을 통해 어떤 장치들이 있는지 살펴보자.
아래의 그림을 보면 일단 디스크는 한개가 장착되어 있는것을 볼 수 있다.


디스크를 선택한다.
: 0

root 파티션 명을 보기위해 파티션 정보를 보고자 하는데 일반적으로 0번이다.
partition 정보를 보자.
>part 
>print



root 는 0번 파티션에 자리하고 있는것을 확인 할 수 있다.
그럼 다시 format 명령어를 입력했을때의 이미지를 보면 선택한 디스크의 명이 c0d0 이고 파티션이 0번이므로 마운트해야 할 장치명은 c0d0s0 이 된다. (s는 slice 으로 파티션이라고 생각하면 된다.) 
장치명을 확인 했으면 quit 명령어로 명령을 종료한다.
>quit
>quit



MOUNT

이제 OS가 설치된 root 를 마운트 할 차례다.
마운트를 할 장치명은 c0d0s0이므로 /a 디렉토리에 마운트를 하자.

# mount /dev/dsk/c0d0s0 /a

/a 디렉토리는 마운트를 할 수 있도록 존재하는 디렉토리이다.
이 디렉토리에 원하는 장치를 마운트하면 되겠다.

마운트가 되었으면 가서 확인하고 비밀번호 관리파일인 /a/etc/shadow 파일을 vi 로 편집하자.
# cd /a


아래와 같이 root 계정의 password 부분만 삭제 하고 저장한다.
vi 로 편집할 때에는 실수하지 않도록 주의한다.



cd rom의 cd 를 제거하고 재부팅 하자.
재부팅이 되면 root 의 패스워드를 물어보지 않는다.
passwd 명령어를 통해 password 를 설정하자.


# passwd [root]



완료

이 글의 가장 큰 핵심은 CD를 이용하여 SINGLE USR MODE 로 부팅하여 작업할 장치를 MOUNT하여 작업하는 것이다.