티스토리 뷰

Certificate/RHCSA

리눅스 ROOT 암호 복구방법

우주아줌마 2023. 2. 6. 11:37
728x90
반응형

리눅스 root 암호 복구 방법 은 구글링 을 하다 보면 다양 하게 나오는데 

이 글은 REDHAT Linux 7이후 버전 을 기준으로 작성 하겠습니다.

제가 교육 받은 내용과 RHCSA 시험 을 보고 진행 했던 리눅스 root 암호 복구방법 을 사용 하게되니

참고 하시고 연습 해보시면 될거 같아요

저도 vm 으로 만들어 두었던 서버에 테스트 할게 있어서 오랜만에 구동 하게 되면 암호를 잊어서... 

새로 설치 하기는 귀찮고 그냥 리눅스 root 암호 복구 를 해서 변경 후 사용 하곤 합니다..

 

목차

    1. 리눅스 root 암호 복구 방법

      -  RedHat 기준( Centos 포함)


    리눅스 root 암호 복구 

    이 글에 설명 하게 되는 방법 으로 암호 복구가 불가능 한 경우는 관리자 권한 으로 로그인 되어 있지 않아서 일수 있고

    아니면 에초에 복구 기능을 관리자가 막아 놓았을 수도 있다.

    라이브 CD 나 ISO 를 연결하여 루트 파일 시스템을 마운트 하고 /etc/shadow 를 편집 하는 방법이 있으며

    관리자 (root) 는 외부 장치를 사용 하지 않고 복구 할수도 있다.

     

     


    암호 복구  절차 #1

    1. 시스템을 재부팅 한다.

    2. 아무 키를 눌러서 부트 로더 카운트다운을 중단 한다.

    3. e를 눌러 선택한 항목을 편집한다.

    4. 커서를 커널 명령줄(linux 으로 시작 하는 라인) 으로 이동 한다.

    5. 키보드 'END' 키를 눌르거나 커서로 라인 끝으로 이동 한다.

    6. rd.break 를 추가한다

    7. Ctrl + x 르 눌러 변경 내용을 적용 한다.  

       (root 쉘이 표시되고 실제 시스템의 루트 파일 시스템은 /sysroot 에 읽기 전용으로 마운트 된다.)

     

     

     

     

     


     

    암호 복구  절차 #2

    1. /sysroot 를 읽기 - 쓰기 로 다시 마운트 합니다.

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

    2. /sysroot 가 파일 시스템 트리의 루트로 취급되는 chroot 된 환경으로 전환 한다.

    switch_root:/# chroot /sysroot

    3. 새 루트 암호를 설정 한다.

    sh-4.2# passwd root

    passwd 명령어 로 root 암호 를 새로 지정 한다.

    sh-4.2# echo '변경할암호' | passwd --stdin root

    passwd 명령어로 입력 하면 대소문자 나 오타 구분를 잘해야 하니

    root 암호를 보면 안되는 사람이 옆에나 뒤에서 보고 있는게 아니라면

    'echo ' 를 통해 암호를 직접 입력하여 설정 하는 방법을 추천 한다.

     

    4.레이블이 없는 모든 파일(이 시점에서는 /etc/shadow 을 포함) 이 부팅중 다시 레이블이 지정되도록 한다.

     sh-4.2# touch /.autorelabel

    5. exit 를 두번 입력 한다. 첫 번째는 chroot 된 환경에서 종료 하고

     두번째는 initramfs 디버그 쉘을 종료 하게 된다.

     이제 시스템은 재부팅 되고 SElinux 재레이블 수행 하게 되면 다시 재부팅 한다.

     


     

    시스템 부팅 문제 진단 과 복구 모드

    부팅 하면서 서비스 를 시작 할대 문제가 발생 하게 되면 정상적으로 부팅이 되지 않기 때문에 어디서 에러가 나고 충돌이 나는 지 알수가 없는 경우가 있다

    그럴때 '초기 디버그 쉘' 서비스 를 시작해 두고 부팅 하게 되면 

    TTY9 (Ctrl + Alt + F9) 에 root쉘 이 생성 된다.

    systemctl enable debug-shell.service

    ** 중요 ** 

    디버깅을 마치면 반드시 debug-shell.service 서비스를 비활성화 해야 한다.

    왜냐 하면 부팅 하면 아무나 디버깅 모드로 다들어 갈수 있게 되기 때문에

    누가 뭘 어떻게 변경 했는지 알수 없게 된다. 꼭 문제 해결하고  서비스 종료 하자

     

    systemctl debug-shell.service

     

     

     


     

    리눅스 root 암호복구 마무리

    긴급 및 복구 대상

     - 부트 로더에서 커널 로더에 systemd.unit=rescue.target 또는

    systemd.unit=emergency.target 을 추가 하게 되면 시스템이 정상 부팅 하지 않고 특수 복구 모드, 긴급 쉘 로 시작 하게 되면 이때 root의 암혹 필요 하게 된다.

    RHCSA 시험 문제에서 두개의 서버중 한개의 서버는 복구 모드로 진입해서 접속해야 할 때도 있고 암호 복구 방법을 통해 암호를 변경해야 할 경우도 있다.

    시험 문제 전 설명 페이지에서 root 암호는 'XXXXX' 이다 라고 재시가 될겨우

    systemd.unit=emergency.target  으로 긴급 모드로 들어가 제공된 암호로 서버에 접속하고 시험 문제들 을 진행 해야 한다.

    그리고 다른 서버는 ssh 로 연결해서 문제를 풀어야 하고...

    이거 모르고 갔다가 덤프만 외워서 가면 난감 해진다....

    실제로 단체 교육 을 참가 했을때 마지막날 시험이 었는데

    본인 들은 덤프 있다고 교육  대충 듣고 하다가.... 시험 당일날 대리,과장 급들

    후두두두 떨어지는거 많이 봤다..

     

     

     

    728x90
    반응형
    댓글