CentOS 8 - 싱글 유저 모드 및 ROOT 패스워드 초기화

    CentOS 8 - Single user mode and ROOT password reset

    서버 관리를 하다 보면 ROOT 패스워드를 분실 또는 잊어버리거나 만료가 되어 콘솔(원격)에 직접 연결하지 못하는 경험을 하신 적이 있을 겁니다.  ROOT 암호를 복구하기 위해서는 싱글 유저 모드로 접근을 해야 하는데요. 그러기 위해서는 운영 중인 서버를 재시작할 필요가 있습니다. 싱글 유저 모드 접근 및 ROOT 패스워드 변경하는 방법을 알아보도록 하겠습니다.

    ■ [테스트환경 및 준비물]
    CentOS 8 리눅스 설치 서버 [포스팅 참고]

    OS 버전
    [root@localhost ~]# cat /etc/redhat-release
    CentOS Linux release 8.1.1911 (Core)

     

    ※ CentOS 8 커널 5.7 적용 후 테스트 진행 [기본 커널에서 작업해도 상관없음]
    [root@localhost ~]# uname -r

    5.7.2-1.el8.elrepo.x86_64

    ■ 진행 순서


    STEP1

    서버 재부팅 시 GRUB 메뉴에서 편집 모드로 접근합니다. 일반적으로 시스템 부팅되는 커널을 선택 후 [ e ] 누릅니다.

    ※ 편집모드로 접근한다는 의미는 가만히 있으면 자동으로 부팅이 되어 로그인 화면으로 넘어가지만 키보드 위아래 한번 움직이면 편집 모드로 전환됩니다.

     

    STEP2

    [ Kernel= ] 시작하는 끝부분에 [ rd.break ] 입력하고 [ Ctrl + x ] 동시에 눌러 부팅 프로세스를 실행합니다.

     

    STEP3 [순차적 명령어 진행]

    switch_root:/# mount | grep sysroot

    /dev/mapper/cl-root on /sysroot type ext4 (ro,relatime)

    switch_root:/# mount -o remount,rw /sysroot/

    switch_root:/# mount | grep sysroot

    /dev/mapper/cl-root on /sysroot type ext4 (rw,relatime)

    switch_root:/# chroot /sysroot

    sh-4.4#

    □ 설명

    ※ # mount | grep sysroot

    /dev/mapper/cl-root on /sysroot type ext4 (ro,relatime)

    마운트 상태[ sysroot ]를 확인해보면 기본적으로 [ ro ] 읽기 전용으로 올라오므로 수정이 불가능합니다.

     

    ※ # mount -o remount,rw /sysroot/

    [ sysroot ] 디렉터리를 읽기 쓰기 권한 [ rw ]으로 재 마운트를 합니다.

     

    ※ # mount | grep sysroot

    /dev/mapper/cl-root on /sysroot type ext4 (rw,relatime)

    다시 한번 상태 확인 시 [ rw ] 권한으로 변경되었는지 확인합니다.

     

    ※ # chroot /sysroot

    [ sysroot ] 디렉터리를 [ chroot ] 명령어를 이용해 가상의 루트 디렉터리를 생성합니다.

    chroot는 가상의 root를 만드는 명령어입니다. 가상으로 설정할 루트 경로에 시스템 운영에 필요한 라이브러리와 실행 파일을 복사해 놓고 chroot 명령을 내리면 가상 root 시스템으로 들어가게 됩니다.

     

    STEP 4

    가상 디렉터리 [ sysroot ] 접근이 되면 쉘 [ sh-4.4# ] 명령 프롬프트로 접근하게 되며 일반적인 명령어 실행이 가능해집니다.

    [ passwd ] 명령어를 통해 [ root ] 패스워드를 변경합니다.

    ※ # LANG=C 명령어를 한 이유는 제가 접속한 콘솔 화면에서는 한글이 깨져 나와 영문으로 나올 수 있게 변경함

    sh-4.4# passwd root

    Changing password for user root.
    New password: 패스워드 입력
    Retype new password: 패스워드 재입력
    passwd: all authentication tokens updated successfully.

     

    STEP 5 [순차적 명령어 진행]

    sh-4.4# touch /.autorelabel

    sh-4.4# exit

    switch_root:/# logout

    □ 설명[중요]

    sh-4.4# touch /.autorelabel

    [ autorelabel ] 하는 이유는 [ SELinux ] 시스템과 관련이 있습니다. 간단하게 말씀드리면 이 시스템은 애플리케이션, 프로세스, 파일에 대한 액세스를 제어하는 역할을 하며 이 정보를 저장하고 있는 게 보안 레이블[ relabel ]입니다. 가상 디렉터리에서 파일을 수정하거나 정보를 변경하면 만약 이 명령어를 하지 않을 경우 실제 부팅 시에 레이블 정보가 저장되지 않은 체 부팅이 되므로 문제가 발생하게 됩니다. 정상적으로 부팅이 되더라도 ROOT 패스워드가 반영되지 않습니다.

     

    SELinux 기능을 [ disable ] 꺼놨다면 위 명령어를 하지 않아도 됩니다. 다만 안전하게 진행하기 위해 해당 명령어를 입력하시는 것을 권고합니다.

     

    ※ SELinux 기능이 [ enforcing ] 적용되어 있고 [ autorelabel ] 실행 후에 재시작하면 다음과 같이 레이블을 재 설정하기 때문에 부팅이 오래 걸릴 수 있습니다. 인내심 있게 기다리시면 자동으로 부팅됩니다.

     

    STEP6

    이후 자동으로 부팅이 되며 로그인 화면이 나오므로 새로운 패스워드 입력 후 정상 로그인 확인하면 됩니다.

    Designed by JB FACTORY