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 파일에 저장되어 있다.
2-3. 그리고 로그인이 끝나면 /etc/passwd 파일에서 가장 마지막 필드에 있는 프로그램을 실행한다. 대부분의 유저의 경우는 /bin/bash로 되어 있으므로, bash 쉘이 실행이 된다.
2-4. 만약 zsh, ksh와 같은 다른 쉘을 사용하고 싶을때는 텍스트 에디터를 통해서 쉘을 변경한 후 다시 로그인하면 쉘이 정상적으로 변경된다.
'IT Study > AWS & Server, Network' 카테고리의 다른 글
[AWS] aws cli / Security Group rule add, remove / 보안그룹 권한 수정 (0) | 2021.10.14 |
---|---|
[Linux] 사용자와 그룹 설정 파일 (0) | 2021.09.15 |
[Linux] root 사용자 원격 접속 차단 & 일반 사용자 관리자 권한 부여 (0) | 2021.08.29 |
[Server] CentOS 7 DNS 구축 (0) | 2021.08.16 |
[AWS] Linux FTP 서버 (0) | 2021.08.13 |