리눅스 시스템의 부팅 과정

 

바이오스 단계

  • PC의 전원 스위치를 켜서 부팅하면 제일 먼저 바이오스(BIOS, basic input/output system)가 동작
  • 바이오스는 PC에 장착된 기본적인 하드웨어(키보드, 디스크 등)의 상태를 확인한 후 부팅 장치를 선택하여 부팅 디스크의 첫 섹터에서 512바이트를 로딩
  • 이 512바이트가 마스터 부트 레코드(master boot record, MBR): 2차 부팅 프로그램(부트 로더)의 위치 저장

 

 

< systemd 서비스 >

init 프로세스와 런레벨 (중요)

 

  • init 프로세스에서 사용하던 런레벨(Run Level)의 개념에 대한 이해 필요
  • init는 시스템의 단계를 일곱 개로 정의하여 구분하고 각 단계에 따라 셸 스크립트를 실행하는데, 이 단계들을 런레벨이라고 함

 

systemd 유닛 (데몬 = 서비스)

  •  systemd는 전체 시스템을 시작하고 관리하는 데 유닛(units)이라 부르는 구성 요소를 사용
  •  systemd는 관리 대상의 이름을 ‘서비스 이름.유닛 종류’의 형태로 관리 
  •  각 유닛은 같은 이름과 종류로 구성된 설정 파일과 동일한 이름을 사용

 

systemd의 기본 개념

systemd는 Centos7부터 본격적으로 기존의init 스크립트를 대체하기 시작

거의 대부분의 서비스가systemd기반 변경

systemd는 init 방식에 비해 가진 장점

  • •소켓 기반으로 동작하여inetd 와 호환성을 유지한다.
  • •셸과 독립적으로 부팅이 가능하다.
  • •마운트 제어가 가능하다.
  • •fsck 제어가 가능하다.
  • •시스템 상태에 대한 스냅숏을 유지한다.
  • •SELinux와 통합이 가능하다.
  • •서비스에 시그널을 전달할 수 있다.
  • •셧다운 전에 사용자 세션의 안전한 종료가 가능하다.

맥북의 경우

https://devlog.jwgo.kr/2019/07/03/how-do-i-check-if-a-service-is-running-in-mac/

 

 

 

'P-Language > [Linux]' 카테고리의 다른 글

[Linux] 프로세스의 개념  (0) 2022.12.01
[Linux] 특수 접근 권한  (0) 2022.12.01

프로세스: 현재 시스템에서 실행 중인 프로그램

프로세스의 부모-자식 관계

  • 프로세스는 부모-자식 관계를 가지고 있음
  • 필요에 따라 부모 프로세스(parent process)는 자식 프로세스(child process)를 생성하고, 자식 프로세스는 또 다른 자식 프로세스 생성 가능
  • 부팅할 때 스케줄러가 실행한 프로세스인systemd와 kthreadd프로세스를 제외하면 모든 프로세스는 부모 프로세스를 가지고 있음
  • 자식 프로세스는 할 일이 끝나면 부모 프로세스에 결과를 돌려주고 종료

 

프로세스의 번호 : 각 프로세스는 고유한 번호(PID)

 

프로세스의 종류

  • 데몬 프로세스(HTTP, SSH)
    • 특정 서비스를 제공하기 위해 존재하며 리눅스 커널에 의해 실행
  • 고아 프로세스(systemd - 보통 1번 프로세스)
    • 자식 프로세스가 아직 실행 중인데 부모 프로세스가 먼저 종료된 자식 프로세스는 고아(orphan)프로세스
    • 1번 프로세스가 고아 프로세스의 새로운 부모 프로세스가 되어 고아 프로세스의 작업 종료 지원
  • 좀비 프로세스
    • 자식 프로세스가 실행을 종료했는데도 프로세스 테이블 목록에 남아 있는 경우
    • 좀비 프로세스는 프로세스 목록에defunct프로세스라고 나오기도함
    • 좀비 프로세스가 증가하면 프로세스 테이블의 용량이 부족해서 일반 프로세스가 실행되지 않을 수도 있음

 

SID 

UUID : 장치의 고유번호

 

 

프로세스 목록 보기

현재 실행 중인 프로세스의 목록을 보는 명령: ps

  • 유닉스 (SVR4)옵션 : 묶어서 사용할 수 있고, 붙임표로 시작한다(예 : -ef).
  • BSD 옵션 : 묶어서 사용할 수 있고, 붙임표로 시작하지 않는다(예 : aux).
  • GNU 옵션 : 붙임표 두 개로 시작한다(예 : --pid).

 

포그라운드 작업

  • 포그라운드 프로세스: 사용자가 입력한 명령이 실행되어 결과가 출력될 때까지 기다려야 하는 포그라운드 방식으로 처리되는 프로세스
  • 이를 작업 제어에서는 포그라운드 작업이라고 함
  •  
sleep 100 -> 포그라운드 작업 / sleep 명령이 끝날 때까지 기다려야 한다.

백그라운드 작업

  • 백그라운드 프로세스: 명령을 실행하면 명령의 처리가 끝나는 것과 관계없이 곧바로 프롬프트가 출력되어 사용자가 다른 작업을 계속할 수 있음
  • 작업 제어에서는 백그라운드 작업이라고 함
sleep 100 & -> 백그라운드 작업 
바로프롬프트 나옴			/ 프롬프트가 바로 나와 다른 명령을 실행할 수 있다.

다른 작업하는 동안 그 작업을 연산중 (병렬처리와 비슷)
이전 백그라운드 작업 결과가 언제나올지 모르니 리다이렉트 해주는게 좋음

 

<포그라운드, 백그라운드 프로세스와 작업 제어>

작업 제어

  • 작업 제어는 작업 전환과 작업 일시 중지, 작업 종료를 의미
  • 작업 전환: 포그라운드 작업-> 백그라운드 작업  // 백그라운드 작업->포그라운드 작업으로 전환
  • 작업 일시 중지: 작업을 잠시 중단
  • 작업 종료: 프로세스를 종료하는 것처럼 작업을 종료

 

@ jobs

- 기능 : 백그라운드 작업을 모두 보여줌, 특정 작업 번호를 지정하면 해당 작업의 정보만 보여줌

- 형식 : jobs %작업번호

 

ctrl + c 강제종료 인터럽트

ctrl + d 정상종료

ctrl + z 또는 stop %작업 번호 포그라운드 작업을 일시 중지함

bg %작업 번호 : 백그라운드로 작업시작

fg %작업 번호 : 포그라운드로 작업시작

 

 

작업 예약 

특정한 시간에 작업을 수행하도록 예약할 수 있는 두 가지 방법

  • 정해진 시간에 한 번만 수행 at
  • 정해진 시간에 반복 수행 crontab

at [옵션][시간]

  • - l 실행대기 중 명령의 전체 목록을 출력 (atq 명령과 동일)
  • -r 작업번호
  • -m 메일로알려줌
  • -f 실행할 명령을 파일로 지정

crontab [-u USERID][옵션][파일명]

  •  -e 로그인한 사용자로 예약.
  • -l crontab 파일의 목록을 출력한다.
  • -r crontab 파일을 삭제한다.

'P-Language > [Linux]' 카테고리의 다른 글

[Linux] 리눅스 시스템의 부팅  (0) 2022.12.01
[Linux] 특수 접근 권한  (0) 2022.12.01

 

특수 접근 권한

  • 접근 권한은 원래 4자리
  • 생략된 맨 앞자리는 특수 접근 권한 의미
  • 맨 앞자리 숫자가 0이면 일반적인 접근 권한이지만 이 숫자가 1, 2, 4이면 특수 접근 권한이 설정

 

  • SetUID : 맨 앞자리가 4
  • SetGID : 맨 앞자리가 2
  • 스티키 비트(sticky bit) : 맨 앞자리가 1

SetUID : 해당 프로그램을 실행하는 사용자가 프로그램을 실행하는 동안 임시로 파일의 소유자의 권한으로 프로그램을 수행

 

SetGID : 해당 프로그램을 실행하는 사용자가 프로그램을 실행하는 동안 임시로 파일의 소속 그룹의 권한으로 프로그램을 수행

 

777 ->  rwx/rwx/rwx

-> setuid : rws/rwx/rwx (소유자쪽에 s라 표시)

-> setgid : rwx/rws/rwx  (그룹쪽에 s라 표시)

 

특수 접근 권한 왜 필요해?

 

root 계정이 아니라 / 다른 계정일 경우 rwx/- /- 는 실행할 수 없다.

하지만 Setuid rws/-/-  인 경우 임시로 실행가능

 

설정하는 방법

<기호방식> (심볼릭방식)

setuid  : chmod u+s 파일이름

setgid : chmod g+s 파일이름

 

<숫자모드> (8진수방식)

setuid  : chmod 4755 파일이름

setgid : chmod 2755 파일이름

 

setuid/setgid는 보안에 취약하다 파일관리가 필요하다 / 메인관리자가 아닌 일반 

 

 

 

sticky bit(파일에 설정 못함, 디렉토리에만 설정가능) : 해당 특수 권한이 설정된 디렉토리 내에 생성된 파일들은 소유자와 root외 다른 사용자는 삭제하지 못한다.

디렉토리에 쓰기 권한이 있는 경우 디렉토리에서 파일을 만들고 삭제하고 수정할 수 있다.

: 게시판이라 생각하면 쉬움 / A가 쓴글을 B가 못지움

 

setuid 파일 찾기 : find / -perm -4000 

setgid 파일 찾기 : find / -perm -2000

sticky bit 파일 찾기 : find / -perm -1000

setuid and setguid 파일 찾기 : find / \( -perm -4000 -o -perm -2000 \) -ls

 

 

'P-Language > [Linux]' 카테고리의 다른 글

[Linux] 리눅스 시스템의 부팅  (0) 2022.12.01
[Linux] 프로세스의 개념  (0) 2022.12.01

+ Recent posts