공부/정보보안기사 실기

[Section 01] 시스템 기본 학습 (53 ~ 61pg)

남쪽마을밤송이 2022. 4. 10. 11:59

 [03 UNIX/Linux 시스템 관리] 

 (1) 시스템 시작과 종료 

부팅 관련 용어 정리

  • 런 레벨
    1. 시스템에서 런 레벨의 의미는 시스템의 운영 상태를 숫자 혹은 문자로 표현한 것이다.
    2. init 프로세스는 /etc/inittab 파일에 정의된 런 레벨에 따라 /etc/rc.d/rc[x].d 디렉터리에 나열된 스크립트를 실행하여 시스템의 운영 상태를 구성한다.
    3. x에 들어가는 런 레벨이고 주로 사용하는 3, 5가 의미하는 것은 다음과 같다.
       - 3 : 멀티 유저 모드, 유닉스 기본 런 레벨
       - 5 : 시스템 power off 모드
    4. 서버용 유닉스 시스템은 일반적으로 3 또는 5의 런 레벨로 운영된다. 현재 운영중인 시스템의 런 레벨을 알고 싶은 경우, who -r 또는 runlevel 명령어를 사용한다.
  • INIT 상태
    - INIT 상태란 런 레벨과 같은 의미이다. 시스템이 런 레벨을 이동할 때, init 명령어를 통해서 이동한다.
    - 예를 들어 현재 런 레벨이 멀티유저 모드인 3번인데 싱글 유저모드로 이동하고 싶으면 init S 명령어를 이용하면 된다.
  • 시스템 런 레벨 단계 구성
    1. INIT의 상태는 런 레벨을 옮겨 다니며 각 레벨마다의 역할을 수행하고 있다.
    2. init 명령어 다음에 런 레벨을 쓰면 해당 런 레벨로 이동할 수 있다.

시스템 시작

  • 바이오스 과정 : 시스템에 전원이 들어오면 바이오스는 시스템의 기본적인 하드웨어(CPU, 메모리 등)의 이상 유무를 점검하고 시스템의 하드웨어 정보를 수집한다.
  • 부트 프로그램 과정 : 부트 프로그램은 하드디스크에서 커널을 읽어 들여 메모리상에 적재하고 시스템 제어권을 커널에 넘긴다.
  • 커널 과정
    - 커널이 메모리 상에 적재되면 그때부터 운영체제가 구동되기 시작한다.
    - 커널은 부팅 과정의 일부인 하드웨어 점검을 완료하고 내부 자료구조를 초기화하여 시스템을 운영하기 위한 부가적인 커널 모듈을 하드디스크에서 메모리상으로 적재한다.
  • init 프로세스 과정
    - init 프로세스는 커널에 의해 생성되는 첫 번째 프로세스이다. 커널의 실행으로 운영체제가 하드웨어의 모든 기능을 제어하게 되었을 때 PID가 1인 init 프로세스가 실행된다.
    - 이 프로세스는 모든 UNIX 프로세스의 부모 프로세스로서, 부팅 과정에서 사용자가 시스템을 사용할 수 있게 해주는 초기화 작업을 담당한다.
    - BSD계열은 싱글 유저모드와 멀티 유저모드 두 가지를 지원하는데 반하여 System V 게열은 더 많은 단계로 시스템의 운영 상태를 분류한다. 이를 런 레벨이라 한다.(init/inittab 파일에 정의됨)

시스템 종료

  • 시스템 종료
    • 운영중인 유닉스 시스템은 정기 점검, 하드웨어 및 소프트웨어의 추가 또는 변경, 기타 관리 작업을 하기 위하여 시스템의 종료가 필요하다.
    • 유닉스 시스템 종료할 때 주의사항
      - 접속 중인 사용자에게 시스템의 종료를 공지하여 작업을 마무리하도록 해야 한다.
      - 운영 중인 서비스(프로세스)를 안전하게 종료해야 한다.
      - 하드데스크를 갱신하여 파일 시스템의 무결성을 유지한다.
    • shutdown 명령은 시스템을 안전하게 종료할 때 사용하며 시스템의 런 레벨을 변경할 때도 사용한다. 이 명령은 system V 계열과 BSD 계열로 구분된다.
    • system V 계열 : shutdown -y -i 6
      BSD 계열 : shutdown -r
  • 하드디스크 동기화
    • 유닉스 시스템은 하드디스크의 입출력에 대한 효율성을 높이기 위해 버퍼를 운영한다.
    • 만일 시스템이 비정상적으로 종료되면 버퍼에 있는 데이터가 하드디스크에 반영되지 않아서 파일시스템에서 무결성 문제가 생긴다. 따라서 하드디스크 동기화는 시스템을 종료하는 중에 해야 할 가장 중요한 작업이다.
    • 유닉스나 리눅스 종료시 sync 명령을 내리는 이유가 바로 버퍼의 내용을 하드디스크로 옮기기 위함이다.

 (2) 사용자 관리 

사용자 계정 추가(useradd)

  • 유닉스 시스템에 새로운 사용자 계정을 추가하기 위해서는 다음 과정을 거친다.
    1. 사용자 계정정보를 저장하는 /etc/passwd 파일과 암호화된 비밀번호를 저장하는 /etc/shadow 파일에 사용자 정보를 추가한다.
    2. 그룹 파일 /etc/group에 그룹정보를 추가한다.
    3. 새 사용자를 위한 홈 디렉터리를 생성하고 접근권한을 부여한다.
    4. 사용자 로그인 시 몇 가지 시작 파일을 홈 디렉터리에 생성한다.
  • 입력 문법 : useradd (option) login_name
  • 슈퍼 유저 root 만 사용할 수 있고 새로운 사용자의 패스워드를 변경할 때는 passwd 명령어를 사용한다.

사용자 계정 삭제(userdel)

 

  • 입력 문법 : userdel (option) login_name
  • 역시 슈퍼유저 root만 사용할 수 있다.

그룹 추가(groupadd)

  • 입력 문법 : groupadd (option) group_name
  • 기존에 사용하지 않는 group_name을 지정해야 한다.

그룹 삭제(groupdel)

  • 입력 문법 : groupdel group_name

 (3) 파일 시스템 관리 

파일 시스템 연결(mount)

  • 보조기억장치에 들어있는 데이터를 읽어 오고, 여기에 저장하려면 먼저 해당 장치를 유닉스 시스템에 연결하는 작업이 필요하다.
  • mount 명령은 보조기억장치에 설치된 파일 시스템을 유닉스 시스템이 인식하도록 특정 디렉터리에 논리적으로 연결시켜준다.
  • 입력 문법 : mount (option) device mount_point
  • 인수의 지정 없이 mount 명령만 사용하면 현재 시스템에 마운트된 정보를 출력한다.

파일 시스템 연결 해제(umount)

  • umount 명령은 이전에 마운트된 파일 시스템의 연결을 해제한다.
  • 프로세스가 파일 시스템에 있는 파일을 사용중이거나 사용자가 파일 시스템에 있는 디렉터리에 있다면 umount 명령은 device is busy 메시지와 함께 실패한다.
  • /etc/mtab 파일은 시스템에 마운트된 파일시스템의 정보를 관리한다. mount 명령을 실행하면 파일 시스템이 마운트 정보를 /etc/mtab 파일에 기록하고, umount는 정보를 삭제한다.

하드디스크 사용량(du)

  • du(Disk Usage) 명령은 디렉터리의 하드디스크 사용량을 확인하는데 사용한다.
  • 입력 문법 : du (option) directory_name
  • directory_name을 입력하지 않으면 현재 디렉터리를 기준으로 한다.

파일 시스템 용량 정보(df)

  • df(Disk Free) 명령은 파일시스템의 전체 공간 및 사용가능 공간에 대한 정보를 보여준다.
  • 입력 문법 : df (option) file_system | file
  • file_system 인수는 파일 시스템이 있는 장치명 또는 파일 시스템이 마운트된 디렉터리를 의미한다.

 (4) 프로세스 스케줄 관리 

정기적 스케줄 관리(cron)

  • 개요
    1. cron 데몬 프로세스는 시스템에서 정기적인 작업을 지정시간에 처리하기 위해 사용한다. cron에 의해 동작되는 서비스를 주기적으로 확인하여 임의의 서비스가 동작되는 것을 사전예방해야 할 것이다.
    2. cron 데몬 프로세스를 통한 처리가 효율적인 작업은 다음과 같은 특징을 갖는다.
      • 일괄적으로 처리해야 하는 작업인 경우
      • 작업에 대한 요구가 불규칙적이지 않은 경우
      • 우선순위가 낮은 작업을 일정시기에 처리해야 하는 경우
      • 작업 빈도가 낮아서 필요 시점에 처리하여 마무리하는 것이 자원관리상 효율적인 경우
    3. cron 데몬 프로세스를 사용하려면 다음 세 가지 구성요소가 필요하다.
      • 정기적으로 처리할 작업 목록을 정의한 crontab 파일
      • crontab 파일을 제어(편집)하는 crontab 명령
      • crontab 파일을 읽어서 내용에 정의된 대로 작업을 처리하는 cron 데몬 프로세스
    4. cron 데몬 프로세스는 시스템에서 기본적으로 지원하는 데몬 프로세스이므로 사용자는 crontab 명령으로 작업 목록을 정의하는 방법만 이해하면 된다.
  • crontab 파일의 구조
    1. crontab 파일은 정기적으로 처리해야 하는 작업 목록을 정희한 파일이다.
    2. crontab 파일의 각 행은 Space나 Tab키로 구분된 6개의 필드로 이루어진다.
      • 분 - 시 - 일 - 월 - 요일 - 작업(작은 단위부터라고 생각)
      • 0이 일요일이다.
      • 작업은 지정 시간에 실행할 작업을 절대 경로로 기술하고 필요한 옵션 및 인수를 함께 나열한다.
    3. 작업시간을 의미하는 필드 1~5에서 *은 각 필드 범위의 모든 값을 의미하고 - 는 값의 범위를 기술할 때 사용한다. 그리고 , 기호는 값을 구분하여 기술할 때 사용하고 / 기호는 간격값을 지정할 때 사용한다.
      예시) */5 * * * * batch.sh : 매 5분 간격으로 batch.sh 실행
  • crontab 파일의 제어
    • crontab 파일은 사용자 계정별로 만들어진다.
    • 시스템 관리자인 root는 사용자를 명시적으로 지정하여 다른 사용자의 crontab파일을 편집할 수 있으며, 일반 사용자는 자신것만 가능하다.
    • 입력 문법 : crontab -u user -e(edit)
  • crontab 명령 접근제어
    • crontab 명령을 실행할 수 있는 사용자를 제한하여 허용하지 않는 사용자가 임의로 crontab 명령을 통한 작업 등록을 못하도록 설정한다.
    • crontab 명령 접근제어를 위해 /etc/cron.allow 와 /etc/cron.deny 설정파일을 사용한다.
    • cron.allow 파일만 존재할 경우 해당 파일에 등록되어 있는 사용자만이 crontab 명령을 실행할 수 있다(화이트리스트 방식)
    • cron.deny 파일만 존재하는 경우 해당 파일에 명시된 사용자를 제외하고 모든 사용자가 crontab 명령을 실행할 수 있다.(블랙리스트 방식)
    • 모두 존재하면 cron.allow 파일이 우선하여 적용된다.
    • 모두 없는 경우 대부분의 시스템에서 root만이 crontab 명령을 실행할 수 있다.

일시적 스케줄 관리(at)

  • 작업을 정기적으로 스케줄링하는 cron 데몬 프로세스와 달리, at 명령은 정해진 시간에 한 번만 실행한다.
  • 작업은 예약시간에 처리되고, 한번 처리된 작업은 작업 목록에서 삭제된다.
  • 입력 문법 : at -t time_date
  • atq : at -l과 같은 명령으로 작업목록을 출력한다.
  • atrm job_id : at -r(-d) job_id와 같은 명령으로 해당 작업을 목록에서 삭제한다.