IT Study/AWS & Server, Network

[Linux] init 프로세스와 로그인 과정

ITguny 2021. 9. 14. 21:22

1. init process

1-1. Linux 시스템을 부팅하면 가장 먼저 init이라는 프로세스가 프로세스 아이디(PID) 1번으로 시작한다. 그 후 init 프로세스에 연결된 프로세스들이 순차적으로 시작된다. 


※보충 자료 - Process ID

더보기

PID란 Process ID의 약자이다.

PID는 프로세스를 식별하기 위해 프로세스에 부여되는 식별자를 말한다.


1-2. 먼저 init 프로세스는 시스템을 초기화하고, 표준 입출력, 에러 설정 등 여러가지 작업을 수행한다. 대표적인 작업으로는 init 프로세스의 /etc/rc.d/init.d 디렉터리에서 설정된 런레벨의 쉘스크립트를 실행이 있다. 


※보충 자료 - 표준 입출력, 에러

더보기

표준 입력(stdin)은 키보드나 마우스로 입력을 받는것 -> 0

표준 출력(stdout), 에러(stderr)는 모니터로 출력하는 것 -> 1, 2

 

대표적인 활용 예시:

find / --name secret.txt 2> /dev/null

 해당 명령어를 통해서 Permission deniend 등과 같은 표준 에러는 /dev/null로 보내 터미널에 표시되지 않게 하고, 정상적인 출력값만 출력되게 할 수 있다. 

보충 자료 - 런레벨

더보기

리눅스 부팅 시 실행될 런레벨 설정 파일은 /etc/inittab에 지정되어 있다. 

런레벨은 0~6까지 존재한다.  각각 표에 모드를 정리해두었다.

 

런레벨 종류 의미
0 시스템 종료 모드
1 싱글 유저 모드
2 네트워크 파일시스템(NFS)를 사용하지 않는 멀티 유저 모드
3 풀 멀티 유저 모드(텍스트 모드) - 서버용
4 사용 X
5 GUI 모드 - 데스크탑용
6 재부팅 모드

대표적인 활용 예시

1. 

init 6
# reboot 명령어와 같다.

해당 명령어를 통해서 Linux 시스템을 재부팅할 수 있다. 

 

2. 

init 5
#startx 명령어와 같다.

런레벨 5를 통해서 리눅스 시스템을 GUI로 변경 가능하다. 

앞에서 본 활용 예시처럼 런레벨을 통해서 리눅스 시스템을 종료, 재부팅 등 여러가지 활용이 가능하다.


1-3. 앞에서 언급한 과정이 모두 정상적으로 수행된 뒤 사용자에게 로그인 프롬프트를 출력한다. 


2. 로그인 과정 

2-1. 앞의 과정 후 로그인 프롬프트에서 사용자가 로그인을 기다린다. 사용자가 username을 입력하면 /bin/login 프로그램이 /etc/passwd(/etc/shadow)파일에서 username을 먼저 검증하고, 해당 username이 존재한다면 패스워드를 검증한다.  


※보충 자료 - username 검증

더보기

1. /etc/passwd

tail -3 /etc/passwd

파일을 살펴보면 콜론(:)을 기준으로 맨 앞 필드에 사용자의 이름(username)이 있는것을 알 수 있다. 

2. /etc/shadow

마찬가지로 맨 앞 필드에 사용자의 이름(username)이 있다. 


2-2. username과 password 검증에 모두 통과했다면, /bin 디렉터리에 위치한 login 프로그램은 /etc/passwd 파일에 정의되어 있는 HOME, SHELL, USER 등 다양한 환경 변수를 밑의 표와 같이 초기화 한다.

환경변수 /etc/passwd
HOME 홈디렉터리
SHELL 로그인 쉘
USERNAME 로그인 이름 

※보충 자료 - passwd 파일

더보기

passwd 파일의 구성을 간단히 알아보겠다. 콜론(:)을 기준으로 구분되어 있다.

필드 역할
1번 필드 사용자의 이름(username)
2번 필드 비밀번호가 있는 필드였다. 하지만 보안상의 이유로 x로 표시가 된다.  
3번 필드 유저 아이디(UID)
4번 필드 그룹 아이디(GID)
5번 필드 주석
6번 필드 사용자의 홈디렉터리 경로
7번 필드 로그인 후 실행할 파일이 설정되어 있다. 

ps. 2번 필드의 경우는 옛날에는 암호화 된 패스워드가 있었지만, 현재는 보안상의 이유로 x로 표시가 되고, /etc/shadow 파일에 저장되어 있다. 

/etc/shadow

2-3. 그리고 로그인이 끝나면 /etc/passwd 파일에서 가장 마지막 필드에 있는 프로그램을 실행한다. 대부분의 유저의 경우는 /bin/bash로 되어 있으므로, bash 쉘이 실행이 된다.

 

2-4. 만약 zsh, ksh와 같은 다른 쉘을 사용하고 싶을때는 텍스트 에디터를 통해서 쉘을 변경한 후 다시 로그인하면 쉘이 정상적으로 변경된다.