본문 바로가기

Foundation/- Linux

응급처치 & GRUB설정

응급처치

비밀번호를 잃어버린 경우 안전모드로 들어가서 비밀번호를 바꾸는 방법이 있습니다.

바로 알아보겠습니다.

 

(1)부팅 시 처음에는 GRUB화면이 나타납니다.

   E키를 눌러 'Edit'을 합시다.

 

(2)편집모드에서 가장 밑으로 내려가면 다음과 같은 문장이나오는데

    "linux 16 /boot/vmlinuz-3.10.0-123.el7~~'행에 커서를 가져다 놓고

    문자의 끝부분의 'rhgb quite LANG=ko_KR.UTF-8'을 삭제합니다 .

    그런다음 'init=/bin/sh'를 입력합니다 .

 

(3)Ctrl + x 를 눌러서 부팅을 합니다. 그러면 별도의 절차없이 sh-4.2#으로

  접속이되는 것을 확인가능하며, whoami를 입력해보면 루트 계정이라는 것을

  알 수 있다. 그리고 비밀번호를 바꾼다. 

그럼 오류가 발생하게 되는데 현재 /root 파티션이 읽기 전용으로 마운트 됐기 때문이다.

 

(4)mount를 입력해보면 맨 마지막줄에 ro(read only)를 확인 할 수 있다. 이를

   쓰기모드로 바꿔준다면 비밀번호를 바꿀 수 있다.   

 이상태로 비밀번호를 변경 가능하다. 

 여기까지가 응급처치방법이다. 그런데 보안상 매우 취약하다는 것을 느낄 수 있다 .

 아주 간단하게 루트에 접속하며 심지어 비밀번호까지 바꿀수 있다는 것이다.

 이를 위해 GRUB 부트로더에서 E(Edit)를 누구나할 수 없게 설정해야한다.

 GRUB부트로더 설정에 대해서 알아보자.

 

GRUB부트로더

 

GRUB부트로더는 CentOS를 부팅할 때 처음 나오는 선택 화면이다.

(e편집을 하던 그 화면 입니다.)

 

GRUB의 기본적인 특징

- 부트 정보를 사용자가 임의로 변경해 부팅할 수가 있다. 즉, 부팅 정보가 올바르지 않더라도 수정하여 부팅할 수 있다.

- 다른 여러 가지 운영체제와 멀티부팅을 할 수 있다.

- 대화형 설정이므로 커널의 경로와 파일 이름만 알면 부팅이 가능하다.

 

최근에는 GRUB2를 사용한다 셸 스크립트 문법을 사용해서 GRUB보다 설정을 변경하기가 상당히 복잡해졌다. 하지만 다음과 같은 장점이 있다.

- 셸 스크립트를 지원함으로써 조건식과 함수를 사용할 수 있다.

- 동적 모듈을 로드할 수 있다. 동적 모듈은 /boot/grub2/i386-pc/ 디렉터리에 mod 파일로 존재한다.

- 그래픽 부트 메뉴를 지원하며, 부트 스플래시 성능이 개선되었다.

- ISO 이미지를 이용해서 바로 부팅할 수 있다.

- 설정 파일의 형식이 변경되었지만, 더 향상된 내용을 포함할 수 있다.

 

GRUB2 2의 설정 파일은 /boot/grub2/grub.cfg 파일이며 /etc/grub2.cfg는 링크 파일이다. grub2.cfg 파일은 일반 사용자에게는 읽기 전용이며, root 사용자도 이 파일을 직접 편집해서는 안된다. 설정된 내용을 변경하려면 /etc/default/grub 파일과 /etc/grub.d/ 디렉터리의 파일을 수정한 후에 'grub2-mkconfig'명령어를 실행해 설정을 변경할 수 있다. (이전의 GRUB1의 grub.conf파일은 사용자가 직접 편집해서 사용했다.)

 

위의 /etc/defualt/grub 설정 파일을 이해해 보자.

 

1행 - 처음 화면이 나오고 자동으로 부팅되는 시간을 초 단위로 설정한다. -1로 하면 자동으로 넘어가지 않고 사용자가 직접 엔트리를 선택할 때까지 기다린다.

 

2행 - 초기 부팅 화면에 각 엔트리 앞에 붙을 배포판 이름을 추출한다. 이 행의 경우에는 /etc/system-release 파일에서 'CentOS'라는 글자를 추출한다. 그래서 [그림 4-162]의 앞 부분에 CentOS가 있는 것이다.

 

3행 - saved는 이전에 선택한 엔트리가 기본적으로 계속 선택되도록 한다는 뜻이다. 0번으로 지정하면 첫 번째 엔트리를 의미한다.

 

4행 - 서브 메뉴 사용 여부를 설정한다. 기본 값을 true로 설정해 놓으면 서브 메뉴를 사용하지 않는다. 특별히 설정을 변경할 필요는 없다.

 

5행 - GRUB이 나올 장치를 설정한다. 기본 값을 console로 설정해 놓으면 모니터로 설정된다. 그 외 serial, gfxterm(그래픽 모드 출력) 등으로 설정할 수 있다.

 

6행 - 부팅 시 커널에 전달할 파라미터를 지정한다. 이전에 사용하던 GRUB 1의 파라미터도 일부 사용할 수 있다. 응급 복구모드로 전속하기 위해 이행과 관련된 제일 뒤에 'init=/bin/sh'를 붙여서 부팅했다.

 

7행 - true로 설정하면 메뉴 엔트리에서 복구와 관련된 것을 비활성화한다. 특별히 변경할 필요는 없다.

 

/etc/defualt/grub는 이정도 알고 root 사용자의 비밀번호를 변경하지 못하도록, 부트로더 자체에 비밀번호를 설정해보자. 부트로더의 설정 일부도 바꿔보자.

 

먼저 1행의 타음아웃을 5초 ㅡ> 20초, 2행의 이름을 다음과같이 변경했다

변경값을 적용하기 위해서 다음과같이 명령어를 입력한다. 그래고 재부팅!

재부팅을해보면 다음과같이변경(캡쳐시간이 있기때문에 다음과같이나왔다 원래20초)

 

 이번에는 아무나 GRUB를 편집할 수 있던 문제를 해결해 보겠습니다.

 #vi /etc/grub.d/00_header 파일을 열고 가장 밑 행 (vi에서 명령어G에 해당)으로 가서 다음과같이 추가한다.

유적아이디와 비밀번호는 자유롭게 설정하면 된다. 변경된 내용을 저장하기위해 아까와 마찬가지로 #grub2-mkconfig -o /boot/grub2/grub.cfg를 입력한다

그리고 reboot을 하고 편집모드로 들어가기위해 GRUB 부드로터 화면에서

E를 눌러보자.

다음과 같이 아이디와 비밀번호를 입력해야만 편집을 이용할 수 있다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

'Foundation > - Linux' 카테고리의 다른 글

NFS(Network File System)  (0) 2017.05.24
VMwareTools & NC(NetCat)  (0) 2017.05.16
Telnet & SSH & VNC  (0) 2017.05.15
프로세스(Process)??  (0) 2017.05.12
DHCP ??!  (0) 2017.05.11