본문으로 건너뛰기
페이지 목차
이 페이지에서 검색

EIS

이 페이지에 묻기

EIS · 현재 차시와 목차 본문에서만 찾아 답합니다. 답을 지어내지 않고 해당하는 대목을 그대로 보여 주며, 여기에 없으면 없다고 알려 드립니다.

생성형 AI가 아니라 이 페이지 본문을 찾아 그대로 보여 주는 방식입니다. 외부로 나가는 요청이 없습니다.

EIS · SECURITY

EIS

생성 수정

정보보안기사의 시스템·네트워크·애플리케이션 보안과 암호·관리·실기 내용을 개념의 경계와 실습으로 연결합니다.

29개 문서 · 1 · 시스템보안 · 2 / 29

01 · 단말 · 서버 시스템과 운영체제

지도 위치 : 1과목 · README 4장의 ③ 영역(시스템) — 시스템 보안의 바닥 : 무엇을 지키는가(단말 · 서버)와 그것이 어떻게 돌아가는가(운영체제) | 출제기준: 1. 정보 시스템의 범위 및 이해 > 1. 단말 및 서버 시스템, 2. 운영체제 | 이전: README | 다음: 02 시스템 정보와 로그 출제 빈도 : ⭐⭐⭐ (회당 약 6.7문항 — 출제분석.md) · 변화 ▼ (운영체제 S1.2가 6.6 → 5.4로 소폭 감소, 여전히 1과목 최다) · ⚠️ 신규 범위 포함 (클라우드 · IoT, 권한 뒤 +(ACL), 시스템 콜) 세세항목 : 단말 시스템(PC, 모바일, 프린터, IoT/IIoT 등) · 시스템 서버(DB, DNS, E-mail, WEB/WAS, 파일서버, Cloud, 보안제품 등) · 단말 운영체제(Window, Linux, Android, iOS, Embeded OS 등) · 서버 운영체제(Windows, Linux, Unix 등)

이 노트를 다 읽으면

  1. 단말과 서버, 그리고 클라우드 · IoT · 산업제어시스템이 시스템 보안의 대상으로서 어떻게 다른지 말할 수 있다.
  2. 커널 · 셸 · 시스템 콜을 커널 모드 ↔ 사용자 모드 축으로 설명할 수 있다.
  3. 프로세스 · 스케줄링 · 교착상태 · 메모리 영역의 시험 단골 용어를 형제 개념과의 차이 로 구별할 수 있다.
  4. FAT · NTFS · ext와 inode를 비교하고, 공유 권한과 NTFS 권한이 겹칠 때의 결과를 말할 수 있다.
  5. ls -l 출력과 umask · chmod · 특수권한(SetUID/SetGID/Sticky) · ACL의 +를 숫자로 계산 할 수 있다.
  6. crontab 다섯 필드, 런레벨, 윈도우 레지스트리 루트키, 안드로이드의 adb · Manifest를 용도별로 짝지을 수 있다.

0. 이 노트의 판별 축

#축왼쪽 (0)오른쪽 (1)이 축으로 갈리는 것큰 축 (README 5장)
1누가 실행하는가사용자 모드 (응용 프로그램)커널 모드 (운영체제 핵심)셸 · 응용 ↔ 커널, 시스템 콜이 그 경계를 넘는 문이 노트의 축
2빼앗을 수 있는가비선점 (끝날 때까지 CPU 보유)선점 (운영체제가 회수)FCFS · SJF · HRN ↔ RR · SRT · MLFQ이 노트의 축
3조각 크기가 고정인가고정 크기 (페이지)가변 크기 (세그먼트)페이징(내부 단편화) ↔ 세그멘테이션(외부 단편화)이 노트의 축
4권한을 누가 정하는가소유자가 정함 (임의적)시스템이 등급으로 강제리눅스 퍼미션 · ACL · NTFS 권한 ↔ Secure OS의 강제 접근통제DAC ↔ MAC (파생, ⑥)
5누구의 권한으로 실행되는가실행한 사람의 권한파일 소유자(그룹)의 권한일반 실행 ↔ SetUID · SetGID⑥ 인증 ↔ 인가
6보안 책임이 누구에게 있는가클라우드 제공자클라우드 고객IaaS(고객 책임 큼) ↔ SaaS(제공자 책임 큼)이 노트의 축

이 노트가 답하는 질문은 "공격과 방어가 일어나는 무대는 어떻게 생겼는가" 입니다. 앞에서 배운 네트워크(06~11번 노트)가 공격이 들어오는 길 이었다면, 이 노트는 공격이 도착하는 곳 입니다. 축 4의 DAC ↔ MAC은 앞에서 배운 접근통제(17번 노트)의 개념이 운영체제에서 어떻게 구현되는지를 보여 줍니다. 03번 노트의 버퍼 오버플로우 · Race condition은 이 노트의 메모리 영역 과 SetUID 를 모르면 이해되지 않습니다.


1. 정보 시스템의 범위 — 단말 · 서버 · 클라우드 · IoT

1.1 단말과 서버

단말 시스템 — [정보 시스템]인데, [ 사용자가 직접 조작해 서비스를 요청하는 쪽 ]이라는 점에서 요청을 받아 처리하는 서버와 구별된다. PC, 모바일, 프린터, IoT 기기가 여기에 속합니다.

구분단말 (PC · 모바일 · 프린터 · IoT)서버 (DB · DNS · 메일 · WEB/WAS · 파일서버)
역할서비스 요청서비스 제공 (항상 켜져 있음)
대표 위협악성코드 감염, 분실 · 도난, 사용자 실수원격 공격, 서비스 거부, 대량 정보 유출
대표 대책백신 · EDR, MDM, 매체 제어 (05번 노트)하드닝, 접근통제, 로그 감사 (04번 노트)
설정 파일 예브라우저 보안 영역Apache httpd.conf, DNS named.conf
  • WEB 서버 ↔ WAS : 웹 서버는 정적 파일(HTML · 이미지)을, WAS는 프로그램을 실행해 동적 결과를 만듭니다. Apache의 주 설정 파일은 httpd.conf입니다.
  • RPC (원격 프로시저 호출) : 다른 시스템의 함수를 내 것처럼 호출하는 서비스. rpcinfo -p로 등록된 RPC 서비스를 봅니다. 불필요하면 끄는 대상입니다(04번 노트).
  • BIOS / UEFI : 전원을 켜면 가장 먼저 실행되는 펌웨어로, 하드웨어 점검(POST) 뒤 부트로더를 불러옵니다. 포렌식에서는 BIOS 시각이 시스템 시각의 기준 이라 확인 대상이고, 부트 영역을 노리는 악성코드(03번 노트의 부트섹터 바이러스)와 연결됩니다.

1.2 RAID — 디스크를 묶어 가용성을 높이기

RAID — [저장장치 구성 방식]인데, [ 여러 디스크를 하나처럼 묶어 속도나 중복성을 얻는다 ]는 점에서 사본을 따로 떠 두는 백업과 구별된다. RAID는 디스크 고장에는 버티지만 실수로 지운 파일, 랜섬웨어 암호화는 그대로 복제 하므로 백업을 대신하지 못합니다.

레벨방식한 줄최소 디스크
RAID 0스트라이핑나눠 쓰기. 빠르지만 중복 없음 — 하나만 고장 나도 전부 손실2
RAID 1미러링똑같이 두 벌. 용량은 절반2
RAID 3 · 4전용 패리티 디스크패리티 디스크 하나에 몰림 → 병목3
RAID 5분산 패리티패리티를 모든 디스크에 나눔. 1개 고장까지 복구3
RAID 6이중 분산 패리티2개 고장까지 복구4
RAID 1+0미러링 + 스트라이핑속도와 중복성 모두4

📝 기출 포인트 — "미러링에 해당하는 레벨"(1)과 "분산 패리티에 해당하는 레벨"(5)을 고르는 문제가 두 번 나왔습니다. 0은 중복이 없다 는 것이 오답 함정입니다.

1.3 산업제어시스템 · IoT · 모바일 단말 ⚠️ 신규 범위

SCADA — [산업제어시스템(ICS)]인데, [ 멀리 흩어진 설비(전력 · 수도 · 가스)를 중앙에서 감시하고 제어한다 ]는 점에서 한 공장 안의 기계를 직접 움직이는 PLC와 구별된다. PLC를 노린 대표 공격이 Stuxnet입니다(03번 노트).

대상주요 위협시험이 묻는 것
IoT 가전 · 홈 IoT기본(초기) 패스워드 방치, 펌웨어 업데이트 부재, 평문 통신보안위협의 원인 — Mirai 봇넷이 기본 계정으로 감염(03번 노트)
스마트 월패드세대 간 네트워크를 통한 침입, 카메라 영상 유출홈네트워크 보안 요구사항(세대 간 망 분리, 안전한 암호 설정 등) — 세부 수치는 확인 필요
RFID도청, 위치 추적, 복제대책을 물리적 (Kill 명령 · 패러데이 케이지 · 블로커 태그) ↔ 암호 기반 (해시 락 · 랜덤 해시 락 · 해시 체인)으로 구분
드론전파 방해(재밍), GPS 스푸핑, 명령 재전송재밍 = 가용성 위협 (03번 노트)
  • IoT 서비스지향 구조(SoA) — 기능을 서비스 단위로 나눠 계층으로 쌓은 구조입니다. 산업용 IoT 서베이(Xu 외, 2014)에서는 아래부터 감지(Sensing) → 네트워크 → 서비스 → 인터페이스 4계층으로 설명합니다. 교재마다 계층 이름이 조금씩 다르니 순서(장치 → 통신 → 서비스 → 사용자)로 기억하세요.
  • BYOD 모바일 보안 — 개인 기기를 업무에 쓸 때, 한 단말 안에서 업무 영역과 개인 영역을 분리 하는 기술(컨테이너화 · 모바일 가상화)과 MDM · MAM을 씁니다. 솔루션 비교는 05번 노트에서 합니다.

1.4 클라우드 ⚠️ 신규 범위

클라우드 컴퓨팅 — [IT 자원 제공 방식]인데, [ 가상화한 자원을 네트워크로 필요한 만큼 빌려 쓴다 ]는 점에서 장비를 직접 사서 운영하는 온프레미스와 구별된다.

모델제공자가 관리고객이 관리예
IaaS물리 서버 · 네트워크 · 가상화(하이퍼바이저)운영체제부터 미들웨어 · 앱 · 데이터 · 계정가상 서버(EC2 등)
CaaS+ 컨테이너 실행 환경컨테이너 이미지 · 앱 · 데이터관리형 컨테이너 서비스
PaaS+ 운영체제 · 런타임 · 미들웨어앱 · 데이터 · 계정앱 배포 플랫폼
SaaS+ 응용 프로그램까지 전부데이터 · 계정 · 접근 권한웹 메일, 협업 도구

💡 책임 공유 모델 : 제공자는 클라우드 "의" 보안(물리 · 하이퍼바이저), 고객은 클라우드 "안의" 보안(데이터 · 계정 · 설정)을 책임집니다. 아래로 갈수록(IaaS → SaaS) 고객의 몫이 줄지만, 계정과 데이터는 어떤 모델에서도 고객 몫 입니다.

가상화 · 클라우드 위협뜻
VM 이스케이프가상 머신 안에서 하이퍼바이저나 다른 VM으로 빠져나가는 공격
하이퍼바이저 공격가상화 계층 자체를 장악 → 그 위의 모든 VM이 위험
멀티테넌시 정보 유출같은 물리 자원을 쓰는 다른 고객 VM 사이의 정보 유출(부채널 포함)
설정 오류퍼블릭 공개된 저장소, MFA 없는 관리자 계정 — 실제 사고의 대부분. 점검은 04번 노트
  • 하이퍼바이저 유형 : Type 1(베어메탈 — 하드웨어 위에 바로) ↔ Type 2(호스트형 — 기존 운영체제 위에 설치).
  • VM ↔ 컨테이너 : VM은 운영체제를 통째로 가지고, 컨테이너는 호스트 커널을 공유 합니다. 그래서 컨테이너가 가볍지만 격리는 약합니다.

📝 기출 포인트 — 2024년에 IaaS · PaaS · SaaS · CaaS 구분이 새로 나왔고, 하이퍼바이저 기반 클라우드 보안위협, "클라우드 보안 특성 설명 중 틀린 것"이 출제되었습니다. 인증 제도(CSAP)는 22번 노트에서 다룹니다.


2. 운영체제의 구조

2.1 커널 · 셸 · 유틸리티

커널 — [운영체제 구성요소]인데, [ 메모리에 상주하며 하드웨어를 추상화하고 프로세스 · 메모리 · 파일 · 장치를 직접 관리한다 ]는 점에서 사용자의 명령을 해석해 커널에 전달할 뿐인 셸과 구별된다.

구성하는 일이건 아닙니다
커널프로세스 · 메모리 · 파일시스템 · 장치 관리. 부팅 후 메모리에 상주명령어 해석기가 아님
셸사용자 명령을 해석 해 커널에 전달 (sh, bash, csh, ksh)하드웨어를 직접 다루지 않음
유틸리티ls, cp, vi 같은 응용 프로그램커널 일부가 아님

⚠️ 컴파일러는 운영체제의 기능이 아닙니다. "운영체제의 역할이 아닌 것"을 고르는 문제에서 단골 오답입니다.

운영체제 5계층 (하위 → 상위): 프로세서 관리 → 메모리 관리 → 프로세스 관리 → 주변장치 관리 → 파일(정보) 관리 . 하드웨어에 가까운 것(CPU)일수록 아래입니다.

처리 방식종차
일괄 처리작업을 모아 한꺼번에 처리
다중 프로그래밍여러 프로그램을 메모리에 올려 CPU 유휴 시간을 줄임 (CPU는 하나)
시분할CPU 시간을 잘게 나눠 여러 사용자가 대화식으로 쓰는 것처럼 (라운드 로빈)
다중 처리CPU가 여러 개
실시간정해진 시간 안에 반드시 응답
분산 처리네트워크로 연결된 여러 컴퓨터 가 하나처럼 — 자원 공유 · 신뢰성 · 확장성 ↑, 설계 · 보안 복잡도 ↑

버퍼링 ↔ 스풀링 : 버퍼링은 주기억장치 를 완충으로 한 작업의 입출력과 연산을 겹치고, 스풀링은 디스크 를 완충으로 여러 작업의 입출력(대표적으로 프린터)을 겹칩니다.

2.2 커널 모드 · 사용자 모드 · 시스템 콜 ⚠️ 신규 범위

시스템 콜 — [인터페이스]인데, [ 사용자 모드의 프로그램이 커널 기능(파일 열기 · 프로세스 생성 · 네트워크)을 요청하는 유일한 공식 통로 ]라는 점에서 같은 사용자 모드 안에서 부르는 라이브러리 함수 호출과 구별된다.

[사용자 모드]  응용 프로그램 → 라이브러리(printf 등) → 시스템 콜(open, read, fork, execve)
──────────────────────────────── 모드 전환(트랩) ────────────────────────────────
[커널 모드]    커널이 하드웨어 · 메모리 · 파일에 직접 접근 → 결과 반환

🔍 읽는 포인트 : 경계선을 넘는 것은 시스템 콜뿐 입니다. 그래서 strace(시스템 콜 추적)로 프로그램이 무엇을 하는지 볼 수 있고(05번 노트), 루트킷은 커널 쪽에서 시스템 콜 결과를 바꿔 자신을 숨깁니다(03번 노트).

커널 구조종차장단점
모놀리식커널 기능 전부가 커널 모드 한 덩어리 (Linux)빠름 ↔ 한 곳의 버그가 전체에 영향
마이크로커널최소 기능만 커널 모드, 나머지(드라이버 · 파일시스템)는 사용자 모드 서버 로안정 · 보안 ↑ ↔ 모드 전환 · 메시지 전달이 많아 느림

인터럽트 — 실행 중 예기치 않은 사건이 생겨 현재 작업을 멈추고 처리 루틴으로 가는 것. 외부(전원 · 타이머 · 입출력) · 내부(0으로 나누기 같은 오류, 트랩) · SVC(시스템 콜로 발생) 로 나눕니다.

📝 기출 포인트 — "사용자 모드에서 커널 기능을 쓰는 인터페이스"(시스템 콜), "마이크로커널의 모드 분리 구조"가 나왔습니다. 커널은 메모리에 상주 한다는 특징도 반복됩니다.


3. 프로세스 · 스케줄링 · 메모리

3.1 프로세스와 스레드

프로세스 — [실행 단위]인데, [ 자기만의 주소 공간을 가진 실행 중인 프로그램 ]이라는 점에서 프로세스 안에서 코드 · 데이터 · 힙을 공유 하고 스택 · 레지스터만 따로 갖는 스레드와 구별된다. 운영체제는 프로세스마다 PCB (PID · 상태 · 프로그램 카운터 · 레지스터 · 메모리 정보 · 열린 파일)를 둡니다.

생성 → 준비 ──(디스패치)──▶ 실행 ──▶ 종료
        ▲  ◀──(타이머 만료)──  │
        └──(깨움)── 대기 ◀──(입출력 요청)
용어뜻찾는 법
init (PID 1)부팅 후 커널이 처음 만드는 사용자 프로세스. 모든 프로세스의 조상. 최근 배포판은 systemdps -ef에서 PID 1
좀비 프로세스자식은 종료 했는데 부모가 회수(wait)하지 않아 프로세스 표에 남은 것ps 상태 Z, <defunct>, top의 zombie 수
고아 프로세스부모가 먼저 종료 → init이 입양부모 PID가 1로 바뀜

3.2 CPU 스케줄링 · 교착상태

구분기법한 줄
비선점FCFS먼저 온 순서
SJF실행 시간이 가장 짧은 작업 먼저 — 평균 대기 최소, 긴 작업은 기아(starvation)
HRN(대기 시간 + 서비스 시간) ÷ 서비스 시간이 큰 것 먼저 — SJF의 기아 보완
선점RR (라운드 로빈)정해진 시간 할당량마다 클록(타이머) 인터럽트 로 CPU 회수 — 시분할
SRTSJF의 선점판 — 남은 시간이 더 짧은 작업이 오면 빼앗음
MLFQ (다단계 피드백 큐)여러 큐 사이를 이동 가능 — CPU를 오래 쓰면 아래 큐로, 오래 기다리면 위로(에이징). 입출력 중심 · CPU 중심 프로세스를 함께 다룸

평가 기준: CPU 이용률 · 처리량은 높게 , 반환 시간 · 대기 시간 · 응답 시간은 짧게 .

교착상태 (Deadlock) — [자원 문제]인데, [ 둘 이상의 프로세스가 서로가 가진 자원을 기다리며 영원히 멈춘다 ]는 점에서 우선순위가 낮아 계속 밀리는 기아와 구별된다.

발생 4조건 (모두 성립해야 발생)처리 4방법
상호배제 · 점유와 대기 · 비선점 · 환형 대기예방 (조건 하나를 없앰) · 회피 (은행원 알고리즘) · 탐지 · 회복
  • 세마포어 : 상호배제를 위한 정수 변수. P(대기) · V(신호) 연산은 원자적 (쪼갤 수 없음)이어야 합니다.
  • 디스크 스케줄링 : SCAN은 헤드가 한쪽 끝까지 갔다가 되돌아오며 처리해 엘리베이터 알고리즘 이라 부릅니다. (FCFS · SSTF · C-SCAN · LOOK이 형제)

📝 기출 포인트 — SJF(비선점) · MLFQ(큐 간 이동) · 클록 인터럽트(선점)가 반복되고, 교착상태 4조건 과 "처리 방법이 아닌 것"이 나옵니다. "스케줄링과 관계가 먼 것"으로 교착 조건을 섞는 유형도 있습니다.

3.3 메모리 — 프로세스 주소 공간 ⭐

03번 노트의 버퍼 오버플로우 · 포맷 스트링 · Heap Spray는 모두 이 그림 위에서 일어납니다.

낮은 주소 ┌──────────────┐
          │ 코드(Text)     │  실행 명령어 (읽기 전용)
          │ 데이터(Data)   │  초기화된 전역 · 정적 변수
          │ BSS           │  초기화되지 않은 전역 · 정적 변수
          │ 힙(Heap)  ↓    │  malloc · new로 동적 할당 — 높은 주소 방향으로 자람
          │      …        │
          │ 스택(Stack) ↑  │  지역 변수 · 매개변수 · 복귀 주소 — 낮은 주소 방향으로 자람
높은 주소 └──────────────┘

🔍 읽는 포인트 : 지역 변수 · 매개변수 · 복귀 주소 = 스택 , 동적 할당 = 힙 , 전역 변수 = 데이터 영역 입니다. "전역 변수가 스택에 저장된다"는 2024년 오답 보기였습니다. 무한 재귀가 망가뜨리는 곳은 스택 입니다.

앞으로 다시 만납니다 — 03번 노트에서 스택의 복귀 주소 를 덮어쓰는 버퍼 오버플로우와 힙을 노리는 Heap Spray를, 04번 노트에서 이를 막는 ASLR · DEP · 스택 가드를 봅니다.

짝왼쪽오른쪽
페이징 ↔ 세그멘테이션고정 크기 페이지 → 내부 단편화가변 크기 (논리 단위) → 외부 단편화
배치 전략최초 적합(처음 맞는 곳) · 최적 적합(가장 딱 맞는 곳)최악 적합(가장 큰 곳)
주소 변환(DAT) 사상직접 사상(페이지 표를 메모리에서 찾음)연관 사상 (TLB 같은 연관 메모리 — 가장 빠름 ), 혼합형은 그 중간

4. 파일시스템

4.1 FAT · NTFS · ext

항목FAT32NTFSext 계열 (리눅스)
운영체제윈도우(구형) · 이동식 매체윈도우리눅스
권한(ACL)❌ 없음⭕ 파일 · 폴더 단위 권한⭕ 소유자/그룹/기타 + ACL
암호화❌⭕ EFS별도 도구
저널링❌⭕ ($LogFile)ext3부터 ⭕
파일 하나 최대4GB 미만매우 큼매우 큼
메타데이터 구조FAT(파일 할당 테이블)MFTinode
  • ext : 1992년 MINIX 파일시스템의 한계 (작은 최대 크기, 짧은 파일명)를 보완한 최초의 리눅스 전용 파일시스템 → ext2 → ext3(저널링 추가) → ext4. ext3 · ext4는 윈도우가 기본으로 쓰지 않는 파일시스템입니다.
  • NTFS의 MFT (Master File Table): 볼륨의 모든 파일 · 디렉터리 정보를 레코드로 담는 표입니다. 작은 파일은 내용까지 MFT 레코드 안에 들어갑니다. 포렌식이 MFT를 보는 이유입니다.
  • 클러스터 : 파일시스템이 디스크 공간을 할당하는 논리 단위 . NTFS 클러스터는 섹터의 2의 거듭제곱 배 (1 · 2 · 4 · 8 … 섹터)로만 정합니다.
  • NTFS 부가 기능 : EFS 암호화, 압축, 디스크 할당량, ADS (대체 데이터 스트림 — 파일 뒤에 숨은 데이터, 악성코드 은닉에 악용), 파일시스템 터널링 (파일을 지우고 짧은 시간 안에 같은 이름으로 다시 만들면 이전 생성 시각을 물려받음. 기본 15초로 알려짐 — 포렌식에서 시각 해석 주의).
  • 빈 블록 관리: 비트 벡터(비트맵) · 연결 리스트 · 그룹핑 · 카운팅. 파일시스템 점검 · 복구 명령은 리눅스 fsck입니다.

4.2 공유 권한과 NTFS 권한

공유 권한NTFS 권한
적용네트워크로 접근할 때만로컬 · 네트워크 모두
세밀함읽기 · 변경 · 모든 권한모든 권한 · 수정 · 읽기 및 실행 · 읽기 · 쓰기 등
  • 네트워크로 접근하면 두 권한 중 더 제한적인 쪽 이 적용됩니다.
  • NTFS 권한은 여러 그룹에서 받은 것이 누적(합) 되지만, 거부(Deny)가 허용보다 우선 합니다.

4.3 inode와 리눅스 디렉터리

inode — [파일 메타데이터 구조]인데, [ 파일 유형 · 권한 · 소유자(UID/GID) · 크기 · 시각(atime/mtime/ctime) · 링크 수 · 데이터 블록 주소를 담되 파일 이름은 담지 않는다 ]는 점에서 이름과 inode 번호를 짝지어 두는 디렉터리 엔트리와 구별된다. ls -i로 번호를 봅니다.

📝 기출 포인트 — "inode에 저장되지 않는 것" = 파일 이름 . 세 번 나왔습니다.

디렉터리용도디렉터리용도
/etc설정 파일 (passwd, shadow 등)/var바뀌는 데이터 — 로그(/var/log) · 메일 스풀
/tmp임시 파일 — 누구나 쓰기, Sticky bit/proc커널 · 프로세스 정보(가상 파일시스템)
/dev장치 파일/boot커널 · 부트로더
/bin · /sbin기본 명령 · 관리자 명령/home · /root사용자 홈 · root 홈 (~ = 내 홈)

📝 기출 포인트 — NTFS는 최다 출제 개념(7회)입니다. MFT · 클러스터 · EFS · 저널링 · 권한 누적 , FAT와의 비교(권한 · 암호화 유무), ext가 MINIX를 보완했다는 사실이 반복됩니다.


5. 리눅스 권한 ⭐

5.1 ls -l 읽기와 chmod

$ ls -l /usr/bin/passwd /tmp/report.txt
-rwsr-xr-x. 1 root  root  33424 ... /usr/bin/passwd
-rw-rw-r--+ 1 kim   dev     812 ... /tmp/report.txt
│└┬┘└┬┘└┬┘│   └소유자 └그룹
│ │  │  │ └ '.'=SELinux 보안 문맥, '+'=ACL 설정됨
│ │  │  └ 기타 사용자(other)
│ │  └ 그룹(group)
│ └ 소유자(user)
└ 파일 유형: - 일반, d 디렉터리, l 심볼릭 링크, c/b 장치

🔍 읽는 포인트 : r=4, w=2, x=1을 세 자리씩 더합니다. rwxr-xr-- = 7 · 5 · 4 = 754 . 소유자 칸의 s는 SetUID입니다(5.3).

명령예뜻
chmod (숫자)chmod 640 a.txtrw-r-----
chmod (기호)chmod u+x,o-r a.txt소유자에 실행 추가, 기타에서 읽기 제거 (u · g · o · a)
chown / chgrpchown kim:dev a.txt소유자 · 그룹 변경
usermodusermod -aG dev kimkim을 dev 그룹에 추가 (-a 없이 -G만 쓰면 기존 보조 그룹이 교체 됨)

디렉터리 권한 은 파일과 뜻이 다릅니다.

권한파일에서디렉터리에서
r내용 읽기안의 이름 목록 보기(ls)
w내용 수정안에 파일 생성 · 삭제 · 이름 변경 (x도 필요)
x실행들어가기(cd) · 안의 파일에 접근

⚠️ 파일을 지울 수 있는지는 파일의 권한이 아니라 그 파일이 든 디렉터리의 w + x 로 정해집니다.

5.2 umask — 기본 권한 계산

umask — [권한 설정값]인데, [ 새로 만드는 파일 · 디렉터리에서 뺄 권한을 정한다 ]는 점에서 이미 있는 파일의 권한을 바꾸는 chmod와 구별된다.

기준값      파일 666 (rw-rw-rw-)     디렉터리 777 (rwxrwxrwx)
umask 022 → 파일 644 (rw-r--r--)     디렉터리 755 (rwxr-xr-x)
umask 002 → 파일 664 (rw-rw-r--)     디렉터리 775 (rwxrwxr-x)
umask 027 → 파일 640 (rw-r-----)     디렉터리 750 (rwxr-x---)

🔍 읽는 포인트 : 파일은 666에서 , 디렉터리는 777에서 출발합니다(새 파일에는 실행 권한을 자동으로 주지 않음). 정확히는 뺄셈이 아니라 비트 마스크 입니다. umask 033이면 파일은 666−033=633이 아니라 644 입니다(없는 실행 비트는 뺄 것이 없음). 보안 권장값은 022 이상 입니다(04번 노트).

5.3 특수권한 — SetUID · SetGID · Sticky bit

특수권한숫자표시 위치뜻대표 예
SetUID4000소유자 x 자리 s실행하는 동안 파일 소유자 권한 으로 동작/usr/bin/passwd (일반 사용자가 root 소유 shadow를 수정)
SetGID2000그룹 x 자리 s실행 시 파일 그룹 권한 . 디렉터리에 걸면 새 파일이 그 그룹을 상속공유 작업 디렉터리
Sticky bit1000기타 x 자리 t디렉터리 안 파일을 소유자(와 root)만 삭제/tmp (drwxrwxrwt, 1777)
-rwsr-xr-x  = 4755   (SetUID + 실행 권한 있음 → 소문자 s)
-rwSr--r--  = 4644   (SetUID인데 소유자 실행 권한 없음 → 대문자 S, 사실상 무의미)
-rwxr-sr-x  = 2755
drwxrwxrwt  = 1777   (기타 실행 권한 없으면 대문자 T)

# SetUID · SetGID 파일 찾기 (침해 조사 · 점검)
find / -user root -perm -4000 -type f 2>/dev/null     # root 소유 SetUID
find / -perm -2000 -type f                             # SetGID
find / -perm -6000 -type f                             # 둘 다
find / -mtime -1                                       # 최근 24시간 안에 바뀐 파일

🔍 읽는 포인트 : 소문자 = 실행 권한 있음, 대문자 = 없음. -perm -4000의 -는 "이 비트가 포함된 "이라는 뜻입니다. 공격자가 root 셸을 SetUID로 숨겨 두는 백도어(03번 노트) 때문에, root 소유 SetUID 파일 목록은 점검의 기본입니다.

📝 기출 포인트 — umask(6회)와 chmod(4회)는 계산 문제 , 특수권한은 표기 해석 (s ↔ S, 4000/2000/1000)과 find -perm 옵션이 최근 3년 연속 나왔습니다.

5.4 ACL의 + · sudo · capabilities ⚠️ 신규 범위

ACL (접근 제어 목록) — [권한 확장]인데, [ 소유자 · 그룹 · 기타 세 칸 외에 특정 사용자 · 그룹별 권한을 추가한다 ]는 점에서 세 칸만 쓰는 기본 퍼미션과 구별된다. 앞에서 배운 ACL(17번 노트)의 리눅스 구현입니다.

$ setfacl -m u:lee:rw report.txt      # lee에게 rw 추가
$ ls -l report.txt
-rw-rw-r--+ 1 kim dev 812 ... report.txt   ← 끝의 '+' = ACL이 걸려 있음
$ getfacl report.txt                  # 실제 ACL 내용 확인

🔍 읽는 포인트 : +는 "기본 퍼미션만 보면 안 된다"는 신호입니다. 형제 개념 chattr (파일 속성, 예: +i 변경 불가 · +a 추가만 허용)은 ls -l에 나타나지 않고 lsattr 로 봅니다.

권한 위임 수단종차
sudo (/etc/sudoers)정해진 사용자 · 그룹이 정해진 명령을 다른 사용자(보통 root) 권한으로 실행. 형식 사용자 호스트=(실행계정) 명령, 그룹은 %wheel ALL=(ALL) ALL
SetUID파일에 붙어 누가 실행하든 소유자 권한
capabilitiesroot 권한을 기능 단위로 쪼갬 . 예: CAP_SYS_MODULE(커널 모듈 적재), CAP_NET_BIND_SERVICE(1024 미만 포트 사용)

6. 운영체제별 관리 요소 — cron · 런레벨 · 레지스트리 · 안드로이드

6.1 리눅스 — cron · 런레벨 · 셸

# crontab -e  (사용자별)          /etc/crontab 은 '사용자' 필드가 하나 더 있음
# 분   시   일   월   요일   명령
  30   2    *    *    1     /root/backup.sh        # 매주 월요일 02:30
  */10 *    *    *    *     /usr/bin/check.sh      # 10분마다
  0    9    1    *    *     /usr/bin/report.sh     # 매월 1일 09:00

🔍 읽는 포인트 : 순서는 분 · 시 · 일 · 월 · 요일 (0과 7 = 일요일). crontab -l 목록, -r 삭제. 사용 허가는 /etc/cron.allow · cron.deny, 실행 기록은 /var/log/cron. 한 번만 예약하는 형제는 at입니다. 공격자가 지속성을 위해 cron에 악성 작업을 넣으므로 점검 대상입니다.

런레벨뜻systemd 타깃
0시스템 종료poweroff.target
1단일 사용자 (관리 · 복구)rescue.target
2다중 사용자(NFS 없음)—
3다중 사용자 · 텍스트multi-user.target
5다중 사용자 · 그래픽graphical.target
6재부팅reboot.target
  • 정상 종료는 shutdown(사용자에게 알리고 디스크를 동기화한 뒤 종료 — 파일시스템 무결성 보호).
  • xinetd : 여러 서비스를 대신 듣다가 요청이 오면 띄워 주는 슈퍼 데몬. /etc/xinetd.d/서비스 파일의 disable = yes가 그 서비스를 끕니다.
  • 셸 환경 파일 : /etc/profile(모든 사용자) → ~/.bash_profile(사용자별 로그인 셸) → ~/.bashrc(비로그인 셸).
  • 셸 특수문자 : | 파이프(앞 출력 → 뒤 입력), ; 순서대로, && 앞이 성공 하면 뒤 실행, || 앞이 실패 하면 뒤 실행, & 백그라운드, > 덮어쓰기 · >> 이어쓰기.
  • 모니터링: free · vmstat(메모리), iostat(디스크 입출력), top · ps(프로세스).

6.2 윈도우 — 레지스트리 · 그룹 · 프로세스

레지스트리 — [윈도우 설정 데이터베이스]인데, [ 운영체제 · 하드웨어 · 사용자 · 프로그램 설정을 계층 키로 한곳에 모은다 ]는 점에서 프로그램마다 흩어진 리눅스 /etc 설정 파일과 구별된다.

루트키담는 것
HKEY_CLASSES_ROOT (HKCR)파일 확장자 ↔ 실행 프로그램 연결 , COM 객체
HKEY_CURRENT_USER (HKCU)현재 로그인한 사용자 의 설정 (NTUSER.DAT에서 로드)
HKEY_LOCAL_MACHINE (HKLM)하드웨어 · 드라이버 · 시스템 전체 설정 (하위: HARDWARE · SAM · SECURITY · SOFTWARE · SYSTEM)
HKEY_USERS (HKU)모든 사용자 프로필
HKEY_CURRENT_CONFIG (HKCC)현재 사용 중인 하드웨어 프로필
  • 하이브 파일 : %SystemRoot%\System32\config\의 SAM · SECURITY · SOFTWARE · SYSTEM · DEFAULT, 사용자별 NTUSER.DAT. HKLM\HARDWARE는 파일이 없습니다 — 부팅할 때마다 메모리에 새로 만듭니다.
  • 편집 도구: regedit, reg(명령줄). strings는 파일에서 문자열을 뽑는 도구일 뿐 레지스트리 편집기가 아닙니다.
  • AutoAdminLogon : HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon의 AutoAdminLogon=1과 DefaultUserName · DefaultPassword로 자동 로그인 — 암호가 평문으로 남는 점검 대상입니다.
기본 그룹범위
Administrators그 컴퓨터(로컬) 에 대한 모든 권한 — 도메인 전체가 아님
Users일반 작업. 시스템 설정 변경 · 다른 사용자 파일 접근 불가
Guests최소 권한 임시 계정
Backup Operators백업 · 복원을 위해 파일 보안을 넘어 읽고 쓸 수 있음
  • UAC (사용자 계정 컨트롤): 관리자도 평소에는 표준 권한으로 실행하고, 관리자 권한이 필요할 때 승인을 요구 합니다.
  • lsass.exe : 로그인 인증 · 보안 정책을 맡는 프로세스(02번 노트의 LSA). svchost.exe : 서비스 DLL을 띄우는 호스트 — 여러 개가 정상이라 악성코드가 이름을 흉내 내는 단골 입니다(03번 노트).
  • net 명령: net user(계정) · net localgroup(그룹) · net share(공유 목록 · 삭제) · net use(공유 연결) · net session(내게 연결된 세션) · net statistics(통계 시작 시각 = 마지막 부팅 시각). 기본 공유(C$ · ADMIN$ · IPC$)는 03 · 04번 노트에서 다룹니다.

6.3 안드로이드 · iOS

앱 (Applications)
자바 API 프레임워크
네이티브 라이브러리 + ART(실행 환경)
HAL (하드웨어 추상화 계층)  ← 카메라 · 센서 같은 하드웨어를 표준 인터페이스로 노출
리눅스 커널                  ← 앱마다 다른 UID로 샌드박스 격리
요소뜻
AndroidManifest.xml앱의 패키지명 · 컴포넌트 · 요청 권한 (<uses-permission>, 예: INTERNET · READ_CONTACTS · SEND_SMS)을 선언하는 필수 파일
adbPC에서 기기를 제어하는 디버깅 도구. adb shell 안에서 pm(패키지 관리) · am(액티비티 실행) · monkey(무작위 입력 테스트)
경로/data/app(설치된 APK), /data/data/<패키지명>/(앱 데이터, databases/의 SQLite DB), /data/local/tmp(adb 셸이 쓸 수 있는 곳)
분석 도구apktool (APK 디코딩 · 재패키징), 디컴파일러(jadx 등) — adb와 용도가 다름

iOS는 앱 코드 서명 과 샌드박스로 더 닫힌 구조이고, 이 제한을 푸는 것이 탈옥(안드로이드는 루팅 — 03번 노트)입니다.

📝 기출 포인트 — 레지스트리(5회)는 루트키별 저장 정보 (HKCR = 확장자 연결, HKLM = 하드웨어 · 드라이버)가 핵심이고, 최근에는 AutoAdminLogon · "파일로 존재하지 않는 하이브"까지 나왔습니다. cron(4회)은 필드 순서 , 2023년 이후로는 안드로이드 adb · Manifest · HAL · SQLite 가 거의 매회 나옵니다.


7. 실기 연결

수행준거 1.1 "운영체제별 보안특성 파악하기" (운영체제 환경 · 버전, 식별 · 인증 · 접근통제)와 2.1 "운영체제 보안설정 점검과 보완하기" (보호 대상 객체의 권한 설정)에 해당합니다.

필답형은 이렇게 묻습니다.

  • ls -l 출력을 주고 "이 파일의 위험성과 조치 명령" → 핵심어: SetUID, root 소유, 불필요 시 chmod u-s
  • "umask 027일 때 생성되는 파일과 디렉터리 권한" → 640, 750 (계산 근거까지 쓰기)
  • crontab 한 줄을 주고 실행 시점 해석 또는 "매일 새벽 3시에 실행하도록 작성"
  • 레지스트리 경로를 주고 무엇을 위한 설정인지

권한 점검표 예시 (리눅스)

점검 대상확인 명령양호 기준
/etc/passwd · /etc/shadowls -l /etc/passwd /etc/shadowpasswd 644 이하, shadow 400(또는 그 이하) · root 소유
SetUID · SetGID 파일find / -perm -4000 -o -perm -2000목록이 관리되고 불필요한 것 없음
누구나 쓸 수 있는 파일find / -type f -perm -2불필요한 world writable 없음
/tmpls -ld /tmpSticky bit(t) 설정
umaskumask022 이상
cron 작업crontab -l, /etc/crontab, /etc/cron.d/모르는 작업 없음, cron 파일 권한 640 이하

💡 서술형 답안은 "무엇이 문제인가 → 어떤 명령으로 확인하는가 → 어떻게 고치는가" 세 줄이 기본 틀입니다. 04번 노트의 하드닝 항목과 짝으로 외우세요.


8. 확인 문제

문제 1. 다음 중 운영체제 커널에 대한 설명으로 옳지 않은 것은? ① 부팅 후 주기억장치에 상주한다 ② 프로세스와 메모리를 관리한다 ③ 사용자가 입력한 명령을 해석하는 명령어 해석기이다 ④ 응용 프로그램은 시스템 콜을 통해 커널 기능을 요청한다

문제 2. umask가 027인 사용자가 새 파일과 새 디렉터리를 만들었을 때의 권한으로 옳은 것은? ① 파일 750, 디렉터리 640 ② 파일 640, 디렉터리 750 ③ 파일 751, 디렉터리 751 ④ 파일 644, 디렉터리 755

문제 3. ls -l 결과가 -rwSr--r--인 파일에 대한 설명으로 옳은 것은? ① SetGID가 설정되어 있고 그룹 실행 권한이 있다 ② SetUID가 설정되어 있지만 소유자 실행 권한이 없다 ③ Sticky bit가 설정되어 있다 ④ 8진수로 2744이다

문제 4. 유닉스 inode에 저장되지 않는 정보는? ① 파일 소유자 UID ② 파일 크기 ③ 파일 이름 ④ 데이터 블록 주소

문제 5. 프로세스가 무한 재귀 호출을 할 때 가장 먼저 고갈되는 메모리 영역은? ① 코드 영역 ② 데이터 영역 ③ 힙 영역 ④ 스택 영역

문제 6. 파일 확장자와 실행할 응용 프로그램의 연결 정보를 담는 레지스트리 루트키는? ① HKEY_CLASSES_ROOT ② HKEY_CURRENT_USER ③ HKEY_USERS ④ HKEY_CURRENT_CONFIG

문제 7. 클라우드 서비스 모델에서 고객이 운영체제 패치까지 직접 책임 지는 모델은? ① SaaS ② PaaS ③ IaaS ④ 모든 모델에서 제공자가 책임진다

문제 8. ls -l 출력의 권한 문자열 끝에 붙은 +가 뜻하는 것은? ① chattr로 변경 불가 속성이 설정됨 ② SELinux 보안 문맥이 있음 ③ 기본 퍼미션 외에 ACL이 설정됨 ④ 심볼릭 링크임

정답과 해설

#정답해설 (판별 축)
1③명령어 해석은 셸 의 일입니다(축 1: 사용자 모드 쪽). 커널은 상주하며 자원을 관리하고, 시스템 콜이 두 모드의 경계입니다.
2②파일은 666, 디렉터리는 777에서 출발해 027을 가립니다. ①은 둘을 뒤바꾼 함정, ④는 umask 022일 때의 값입니다.
3②소유자 x 자리의 S(대문자) = SetUID + 실행 권한 없음. 8진수로는 4644입니다. SetGID는 그룹 자리, Sticky는 기타 자리(t/T)에 표시됩니다.
4③파일 이름은 디렉터리 엔트리 에 있습니다. 하드 링크로 이름이 여러 개여도 inode가 하나인 이유입니다.
5④함수 호출마다 복귀 주소 · 지역 변수가 스택 에 쌓입니다. 힙은 동적 할당, 데이터는 전역 변수 영역입니다.
6①HKCR = 확장자 연결 · COM. HKCU는 현재 사용자 설정, HKCC는 현재 하드웨어 프로필입니다.
7③축 6: IaaS는 하이퍼바이저까지만 제공자 몫이고 운영체제부터 고객 몫 입니다. PaaS부터는 운영체제를 제공자가 관리합니다.
8③+는 ACL(getfacl로 확인), .은 SELinux 문맥입니다. chattr 속성은 ls -l에 보이지 않고 lsattr로 봅니다.

부록 A. 스스로 확인하기

#질문답이 있는 곳
1RAID 1과 RAID 5는 각각 어떤 방식이고, RAID가 백업을 대신하지 못하는 이유는?1.2
2클라우드 책임 공유 모델에서 어떤 모델이든 고객 몫으로 남는 것은?1.4
3운영체제 5계층을 아래부터 순서대로 말하면?2.1
4시스템 콜이 사용자 모드와 커널 모드 사이에서 하는 역할은?2.2
5SJF · RR · MLFQ를 선점 ↔ 비선점 축에 꽂으면?3.2
6교착상태 4조건과 처리 4방법은?3.2
7지역 변수 · 전역 변수 · malloc 결과는 각각 어느 메모리 영역에 있는가?3.3
8NTFS와 FAT32의 차이 세 가지는? MFT는 무엇인가?4.1
9공유 권한과 NTFS 권한이 겹칠 때 적용되는 권한은?4.2
10umask 022에서 파일과 디렉터리의 기본 권한은?5.2
11s와 S, t와 T의 차이는? SetUID 파일을 찾는 find 명령은?5.3
12crontab 다섯 필드의 순서는?6.1
13HKCR · HKCU · HKLM에는 각각 무엇이 저장되는가?6.2
14AndroidManifest.xml과 HAL은 각각 무엇인가?6.3

부록 B. 자주 하는 실수 · 함정

실수바로잡기
"RAID를 구성했으니 백업은 필요 없다"❌ RAID는 디스크 고장 대비. 삭제 · 랜섬웨어는 그대로 복제됨
"셸이 운영체제의 핵심이다"❌ 핵심은 커널 . 셸은 명령어 해석기
"컴파일러도 운영체제 기능이다"❌ 운영체제 역할이 아닌 것의 단골 보기
"전역 변수는 스택에 저장된다"❌ 전역 · 정적 변수는 데이터(BSS) 영역 . 스택은 지역 변수 · 매개변수 · 복귀 주소
"umask는 777에서 빼면 된다"⚠️ 파일은 666 , 디렉터리는 777 에서 출발. 그리고 엄밀히는 비트 마스크
"파일에 w 권한이 없으면 그 파일을 지울 수 없다"❌ 삭제는 디렉터리의 w + x 가 결정 (그래서 /tmp에는 Sticky bit)
"-rwSr--r--도 root 권한으로 실행된다"⚠️ 대문자 S = 실행 권한 없음 → 실행 자체가 안 됨
"inode에 파일 이름이 있다"❌ 이름은 디렉터리 엔트리
"Administrators 그룹은 도메인 전체 관리자다"❌ 로컬 컴퓨터 범위. 도메인 관리자는 Domain Admins
"usermod -G dev kim으로 그룹을 추가한다"⚠️ -a 없이 쓰면 기존 보조 그룹이 덮어써짐
"SaaS면 보안은 전부 제공자 책임"❌ 계정 · 데이터 · 접근 권한은 언제나 고객 책임

부록 C. AI · NotebookLM 복습 프롬프트

이 01번 노트만 근거로 4지선다 8문제를 내줘. 비전공자 기준으로.
umask 계산, 특수권한 표기(s/S/t/T), 메모리 영역, 레지스트리 루트키, 클라우드 책임 공유는 반드시 포함해줘.
내가 답하면 채점하고, 틀린 보기가 왜 틀렸는지 노트의 판별 축(0절)과 절 번호를 근거로 설명해줘.
노트에 없는 내용은 "노트에 없음"이라고 말해줘.