리눅스 시험대비

Seoyeon·2026년 6월 29일

1. 리눅스 기본 명령어 / 파일 관리 / 편집기 사용 정리


1. 운영체제(OS)와 리눅스

운영체제란?

  • 하드웨어(CPU, 메모리, 하드디스크) 위에서 소프트웨어(프로세스)를 실행할 수 있게 해주는 기반 소프트웨어
  • 하드웨어를 먼저 구현하고, 그 위에서 소프트웨어를 처리할 수 있는 시스템을 만드는 것
  • 운영체제 자체도 소프트웨어

리눅스의 특징

  • 서버용 운영체제로 많이 사용
  • 오픈소스 / 무료 (Free SW = 라이선스 자체가 무료, Open Source = Free SW + Charge SW 포함)
  • Apache, MySQL 등 고품질 소프트웨어 지원
  • 멀티유저(multi-user), 멀티태스킹(multi-tasking) 지원
  • 적은 리소스에서도 동작, 강력한 네트워크 환경 지원
  • Unix 프로그램과 이식성 높음
  • 스크립트를 통한 자동화 용이

리눅스 커널 vs 배포판

  • 커널: OS의 핵심. 하드웨어를 직접 제어하는 소프트웨어. 사용자 도구/앱은 포함하지 않음
  • 리눅스 배포판: 커널 + 기본 명령어 + 애플리케이션을 묶어서 패키징한 것 = 우리가 실제로 사용하는 "리눅스"
  • GNU/Linux: GNU 프로젝트 안에 여러 프로젝트들이 포함된 형태

주요 배포판

계열배포판
레드햇 (실무에서 많이 사용)Red Hat Enterprise Linux, CentOS, Fedora, Rocky Linux
데비안Debian GNU/Linux, Ubuntu

이번 과정에서는 Rocky Linux 사용


2. 리눅스 실행 환경

CLI vs GUI

구분설명
CLI (Command Line Interface)텍스트 기반 명령줄 인터페이스. 리눅스에서 주로 사용
GUI (Graphical User Interface)그래픽 기반. Windows처럼 아이콘/메뉴 방식

실행 환경 전환 명령어

# GUI로 변경
systemctl isolate graphical.target

# CLI로 변경
systemctl isolate multi-user.target

# 기본 실행 환경 확인/변경
systemctl get-default
systemctl set-default graphical.target
systemctl set-default multi-user.target

GUI 패키지 설치 (minimal 설치 시)

dnf grouplist
dnf groupinstall "Server with GUI"

3. 셸(Shell)과 명령어

셸이란?

  • 사용자가 입력한 명령어를 기계어(이진 데이터)로 번역해주는 프로그램
  • 커널은 기계어만 이해하므로 번역기(인터프리터) 역할 필요
키보드 입력 → 터미널 → Shell → Kernel
  • 터미널: 입출력을 담당하는 프로그램 (Shell과 다름)
  • 프롬프트 상태:
    • # → root 사용자
    • $ → 일반 사용자
    • 아무 표시 없음 → 현재 명령어 입력 불가 상태

기본 셸 확인 및 변경

echo $SHELL          # 현재 셸 확인 (기본: bash)

/bin/sh              # 본셸로 변경
/bin/bash            # bash로 변경
exit                 # 현재 셸 종료 (상위 셸로 돌아감)

본셸(sh)이 리눅스 기본 셸이었고, 이를 업데이트한 것이 bash
macOS는 zsh, Windows는 PowerShell 사용
셸 변경 시 실제로는 하위 셸을 중첩 실행하는 것 (pstree 명령어로 확인 가능)

명령어 이력 (history)

  • / 방향키: 이전/다음 명령어 탐색
  • ctrl + r: 증분 검색 모드 (문자 입력 시 자동 검색)
단축키내용
문자 입력입력할 때마다 이력 검색
ctrl + r이전 검색 결과로 이동
Enter현재 검색 결과 실행
ESC검색 결과 유지하되 실행 안 하고 프롬프트로 복귀
ctrl + g검색 결과 지우고 프롬프트로 복귀

메모리가 flush되기 전까지 검색 가능. 파일로 저장도 가능.


4. 리눅스 디렉토리 구조

핵심 개념

  • 리눅스는 모든 것을 파일로 다룸 (하드디스크, 키보드, 프린터 등 장치도 파일)
  • 전체 구조는 트리 형태 (FHS: Filesystem Hierarchy Standard)

주요 디렉토리

디렉토리설명
/루트 디렉토리. 모든 파일 위치의 시작점
/rootroot 사용자의 홈 디렉토리 (루트 디렉토리와 다름!)
/home일반 사용자 계정 홈 디렉토리 (/home/user2 등)
/bin일반 사용자용 기본 실행 명령어
/sbin관리자용 명령어
/etc환경 설정 파일, 서비스 구성 파일
/boot리눅스 커널 + 부트로더 위치
/usr사용자 공유 유틸리티/애플리케이션
/lib/bin의 바이너리에 필요한 라이브러리
/dev시스템 장치(device) 목록
/proc커널 및 프로세스 상태 정보
/var가변 파일 (로그, 스풀, 캐시 등)
/tmp임시 파일
/mnt임시 마운트 포인트

주요 설정 파일

/etc/passwd         # 사용자 UID, 쉘 등 관리
/etc/shadow         # 사용자 패스워드 (암호화 저장)
/etc/hosts          # 호스트명 → IP 매핑 (DNS보다 우선 동작)
                    # resolving: 도메인→IP 변환 순서: 캐시 → /etc/hosts → DNS
/etc/fstab          # 파일시스템 마운트 정보
/etc/resolv.conf    # DNS 서버 지정
/var/log/messages   # 시스템 로그
/var/run/sshd.pid   # sshd 데몬 PID

5. 경로(Path)

절대 경로 vs 상대 경로

구분설명예시
절대 경로/(루트)로 시작. 전체 경로 정보 표시/etc/ssh/sshd_config
상대 경로현재 위치(워킹 디렉토리) 기준 경로etc/ssh

차근차근 들어갈 때는 상대경로, 정확한 위치를 알면 절대경로로 바로 이동

특수 경로 표기

표기의미
.현재 디렉토리
..상위(부모) 디렉토리
~현재 사용자의 홈 디렉토리
/루트 디렉토리

cd 명령어

cd /home              # 절대경로로 이동
cd ~                  # 홈 디렉토리로 이동
cd ..                 # 상위 디렉토리로 이동
cd ../testdir2        # 상위 디렉토리의 testdir2로 이동
pwd                   # 현재 경로 출력

6. 파일 관리 명령어

ls - 목록 확인

ls /                  # 루트 디렉토리 내용
ls -l                 # 상세 정보 출력
ls -a                 # 숨김 파일 포함 출력
ls -al                # 상세 + 숨김 파일
ls / /usr             # 여러 경로 동시 출력

mkdir - 디렉토리 생성

mkdir work
mkdir ./testdir1
mkdir ./testdir2

touch - 파일 생성

touch testfile1
touch testfile1 testfile2 testfile3   # 여러 파일 동시 생성

rm - 삭제

rm testfile1              # 파일 삭제
rm testfile*              # 와일드카드 사용 일괄 삭제
rm -r testdir1            # 디렉토리 삭제 (-r 옵션 필수)
rm -i testfile1           # 삭제 전 확인 메시지 출력

⚠️ 리눅스는 삭제 시 휴지통 없음. 바로 삭제됨!

cat - 파일 내용 출력

cat newfile
cat /etc/crontab

less - 페이지 단위로 파일 보기

less /etc/ssh/sshd_config
단축키내용
Space / f한 화면 아래로
b한 화면 위로
j / Enter한 행 아래로
k한 행 위로
q종료
/문자열아래 방향으로 검색
?문자열위 방향으로 검색
n다음 검색 결과
N이전 검색 결과

cp - 복사

cp /etc/ssh/sshd_config ./testfile      # 파일 복사
cp testfile ./testdir1                   # 디렉토리로 복사
cp testfile1 testfile2 testfile3 ./testdir1   # 여러 파일 복사
cp testfile* ./testdir2                  # 와일드카드 복사
cp -r testdir1 testdir3                  # 디렉토리 복사 (-r 필수)

mv - 이동/이름 변경

mv file1 file2           # 이름 변경
mv file1 dir1            # 디렉토리로 이동
mv file1 file2 file3 dir1   # 여러 파일 이동
mv -i file1 file2        # 덮어쓰기 전 확인
mv dir1 dir2             # 디렉토리 이동 (-r 옵션 불필요)

7. vim 편집기

기본 개념

  • 리눅스 기본 텍스트 편집기 (vi 입력해도 vim 실행됨)
  • 텍스트 파일만 편집 가능 (이미지, 동영상, 컴파일된 바이너리 불가)
vim --version         # vim 버전 확인
dnf install vim -y    # 설치 (없을 경우)

vim 실행 방식

vi file1                  # 새 파일 또는 기존 파일 편집 (normal mode)
vi -R file1               # 읽기 전용으로 열기
vi -L file1               # 작업 중인 .swp 파일 확인
vi +30 file1              # 30번째 줄부터 편집 시작
vi +/"hello" file1        # "hello" 단어가 있는 줄부터 시작

vi 실행 시 현재 디렉토리에 .swp 파일 생성됨. 이미 있으면 경고 출력.

3가지 핵심 모드

Normal Mode ←→ (i/a/o 등) →→ Insert Mode
Normal Mode ←→ (:) →→ Command-line Mode
Insert/Cmdline → ESC → Normal Mode

Normal Mode (기본 모드)

  • vim 실행 시 처음 진입하는 모드
  • 파일 내용 탐색, 복사/붙여넣기, 되돌리기 등

이동 키:

동작
h왼쪽
j아래
k
l오른쪽
Page Up/Down한 페이지 이동

Insert Mode (편집 모드)

Normal Mode에서 다음 키로 진입:

동작
i현재 위치에서 입력 시작
I라인 첫 번째 위치에서 입력
a다음 문자부터 입력
A라인 마지막에서 입력
o다음 라인으로 입력
O이전 라인으로 입력
s현재 단어 삭제 후 입력
cw다음 단어까지 삭제 후 입력
C현재 위치부터 라인 끝 삭제 후 입력
cc / S현재 라인 전체 삭제 후 입력
r현재 문자 replace
R여러 문자 replace

Command-line Mode

: 입력으로 진입. 파일 저장, 종료, 검색 등.

명령어동작
:q종료
:w저장
:wq저장 후 종료
:q!저장하지 않고 강제 종료
:wq!강제 저장 후 종료 (root 권한 시)
/문자열검색 (아래 방향)
?문자열검색 (위 방향)

정규 문자: ^ 시작, $ 끝, . 문자 일치, * 모든 문자

이동

Key동작
w한단어 다음 이동
b한단어 이전 이동
(한문단 다음으로 이동
)한문단 이전으로 이동
CTRL + f한 페이지 다음으로 이동
CTRL + b한 페이지 이전으로 이동
$라인의 마지막 문자로 이동
^ 혹은 0라인의 첫번째 문자로 이동
10G파일의 10번 라인으로 이동
G파일의 마지막 라인으로 이동
Key동작
x한 글자 삭제
dw현재 위치에서 다음 한단어 삭제
d0현재 위치에서 라인의 처음까지 삭제
D 혹은 d%현재 위치에서 라인의 마지막까지 삭제
dd현재 라인 모두 삭제
3dd현재라인 포함 총 3개의 라인을 삭제
dG현재 위치에서 부터 마지막 라인까지 모두 삭제
d1G현재 위치에서 부터 첫번째 라인까지 삭제
yy 혹은 Y라인 yank (복사)
pyank된 내용 붙여 넣기
J아래 라인을 현재 라인의 마지막에 이어 붙임
u실행 취소
CTRL + r취소한 명령 다시 실행
K현재 단어의 메뉴얼 페이지로 이동
.이전 명령을 재실행

vimrc 환경 파일

vi ~/.vimrc
set nu           # 행 번호 표시
set ai sw=2 ts=2 et   # 자동 들여쓰기, 탭 크기 설정

8. 추가 편집기 (IDE)

Jupyter Lab

# 설치
yum install -y python3-pip
pip install jupyterlab
jupyter lab --generate-config
jupyter lab password

# 실행
jupyter lab --allow-root --ip 0.0.0.0 --port 8989 &

부팅 시 자동 실행: /etc/systemd/system/jupyter.service 작성 후

systemctl daemon-reload
systemctl enable jupyter

VSCode (code-server)

# 설치
curl -L https://code-server.dev/install.sh | sh

# 설정 파일: ~/.config/code-server/config.yaml
bind-addr: 0.0.0.0:9999
auth: password
password: <패스워드>

# 실행
systemctl start code-server@$USER
systemctl enable code-server@$USER

핵심 명령어 한눈에 보기

명령어기능
pwd현재 경로 출력
cd디렉토리 이동
ls -al숨김 파일 포함 상세 목록
mkdir디렉토리 생성
touch빈 파일 생성
rm -r디렉토리 삭제
cat파일 내용 출력
less페이지 단위 파일 보기
cp -r디렉토리 복사
mv이동 / 이름 변경
vivim 편집기 실행

2. 사용자 및 권한 관리 / 3. Filesystem 및 disk 관리 / 4. 프로세스 관리


2. 사용자 및 권한 관리

사용자 관리 파일

  • 시스템에서는 여러 작업을 수행하는 사용자별로 User와 Group을 통해 역할 구분

/etc/passwd - 사용자 관리 (콜론 : 기준으로 필드 구분)

cat /etc/passwd | grep root
root:x:0:0:root:/root:/bin/bash
필드설명
root사용자 이름
x사용자의 암호 (보안상 표시 안 함, 무조건 x)
0사용자 아이디 (UID)
0그룹 아이디 (GID)
root설명 (comment)
/root사용자의 홈 디렉토리
/bin/bash사용자 로그인 시 실행하는 쉘

nologin → 쉘을 사용하지 않고 내부적으로만 동작함

/etc/shadow - 암호 관리 (암호화되어 저장)

cat /etc/shadow | grep root
필드설명
root사용자 이름
$6$0VhZ...사용자의 암호 (암호화)
비어있음암호를 변경한 날짜 (epoch 타임 기준, 초 아님)
0암호를 변경할 수 없는 최소 날짜 (3이면 3일 동안 변경 불가)
99999암호를 사용할 수 있는 최대 날짜 (무제한 의미, 30이면 30일 후 변경 필요)
7암호 만료 되기 전 경고 메시지 발생 기간
비어있음암호 만료 기간 (만료 전에는 복구 가능, 이후에는 사용 불가)

사용자 생성/수정/삭제

# 사용자 생성
useradd -c test demouser

# 암호 설정
passwd demouser

# 확인
cat /etc/passwd | grep demouser
cat /etc/shadow | grep demouser
cat /etc/group | grep demouser
ls -al /home/

새로운 사용자는 기본적으로 홈 디렉토리가 자동으로 만들어지며 1000 이후의 UID와 GID가 지정됨

# 사용자 수정
usermod -u 2000 demouser
usermod -s /bin/sh demouser    # bash 쉘이 아닌 본쉘로 변경

# 그룹 추가/수정
groupadd testuser
groupdel demouser
usermod -l testuser -g testuser demouser
usermod -d /home/testuser -m testuser

# 사용자 삭제 (-r: 홈 디렉토리와 mail spool도 함께 삭제)
userdel -r testuser

usermod 옵션

옵션설명
-a, --append보조 그룹 추가. -G 옵션과 함께 사용
-c, --comment주석 필드에 텍스트 추가
-d, --home홈 디렉토리 지정
-g, --gid기본 그룹 지정
-G, --groups쉼표로 구분된 보조 그룹 목록 지정
-L, --lock사용자 계정 잠금
-m, --move-home홈 디렉토리를 새 위치로 이동. -d 옵션과 함께 사용
-s, --shell로그인 쉘 지정
-U, --unlock사용자 계정 잠금 해제

그룹 관련 주의사항:

  • 그룹에는 반드시 사용자가 한 명 이상 포함되어야 함
  • 사용자는 어떤 그룹이든 반드시 그룹에 속해야 함
  • 기본 그룹 (-g): append 개념 없음. 무조건 대체
  • 보조 그룹 (-G): -a 옵션 없으면 싹 replace. -a와 함께 써야 추가됨

암호 만기일 설정 예시

useradd -e 2026-05-30 expuser
passwd expuser
cat /etc/shadow | grep expuser

# 날짜 변경 후 접속 테스트
date -s 220601
ssh expuser@localhost
# 실패 확인

UID 범위

범위설명
UID 0슈퍼유저(root)
UID 1~200시스템 프로세스에 정적으로 할당되는 시스템 계정
UID 201~999이 시스템의 파일을 소유하지 않은 시스템 프로세스에 동적으로 할당
UID 1000 이상일반 사용자 (시스템 권한 없음)

파일 소유자와 소유 그룹

  • 파일을 만든 사람 = 파일의 소유자 (변경 가능)
  • 한 사용자는 여러 그룹에 소속 가능
  • 그룹을 특별히 지정하지 않으면 사용자 이름과 동일한 그룹에 소속
# 파일 소유자/그룹 확인
ls -l testfile1

# 소유자 변경
chown testuser:testuser testfile1

# 현재 내가 속한 그룹 확인
groups

퍼미션(Permission)

  • 각 파일에 '누구에게 어떤 권한을 허가할지' 설정된 정보

파일 타입

기호의미
-일반 파일
d디렉토리
l심볼릭 링크

권한 구조 (9글자, 3자리씩 소유자 / 소유그룹 / 기타사용자)

rwx rwx rwx
소유자 소유그룹 기타사용자
기호의미
r읽기 (read) - cat 등 가능
w쓰기 (write) - vi로 편집 가능
x실행 (execute) - 바이너리/스크립트 실행 가능
-해당 권한 없음

만들어지는 모든 파일은 보통 소유자 빼고 W가 빠지게 구성되어 있음

디렉토리 퍼미션 (파일과 의미가 다름!)

기호의미
r디렉토리에 포함된 파일 리스트 취득 가능 (ls)
w디렉토리 하위에 파일 및 디렉토리 작성/삭제 가능
x디렉토리로 이동 가능 (cd)

파일을 지울 수 있는지 여부는 파일이 아니라 디렉토리의 퍼미션에 의해 결정됨
r--이면 cd로 들어가진 못하는데 ls로 파일 리스트 확인은 가능


퍼미션 변경 (chmod)

파일 모드 변경은 해당 파일의 소유자 혹은 슈퍼 사용자만 가능

1. 기호 모드

chmod [ugoa] [+-=][rwx] <파일 이름>
기호의미
u소유자
g소유 그룹
o기타 사용자
au, g, o 모두 (지정 안 하면 a로 간주)
기호의미
+퍼미션 추가
-퍼미션 금지
=지정한 퍼미션과 같게 함
chmod u+w file.txt       # 소유자에게 쓰기 권한 추가
chmod g-w file.txt       # 그룹의 쓰기 권한 제거
chmod go=r file.txt      # 그룹과 기타사용자를 읽기만 가능하게
chmod a-r testdir2       # 모든 사용자 읽기 권한 제거
chmod a-x testdir3       # 모든 사용자 실행 권한 제거

기호 모드는 상대적 퍼미션 지정 (지정한 것 외에는 변화 없음)

2. 수치 모드 (Octal mode)

chmod <8진수 수치> <파일 이름>
의미숫자
읽기 (r)4
쓰기 (w)2
실행 (x)1
권한 없음0

조합 예시:

숫자권한
0---
1--x
2-w-
3-wx (1+2)
4r--
5r-x (4+1)
6rw- (4+2)
7rwx (4+2+1)
chmod 755 file.txt    # rwxr-xr-x  (다른 사용자가 봐도 되는 실행 파일에 보통 사용)
chmod 644 file.txt    # rw-r--r--  (다른 사용자가 봐도 되는 일반 파일에 보통 사용)

수치 모드는 기존 퍼미션을 새로운 퍼미션으로 덮어씀


권한 상승 (Escalation)

  • 슈퍼유저(root): 시스템 설정 변경, 새로운 애플리케이션 설치, 퍼미션 무시하고 모든 파일 읽기/수정/삭제 가능
  • 리눅스 설치하자마자 자동으로 만들어짐
  • 평소에는 일반 사용자로 조작하다가 반드시 필요한 상황에서만 슈퍼 사용자로 조작하는 것이 좋음

su 명령어 - 사용자 전환

  • 로그아웃하지 않고 다른 사용자로 전환 (권한 상승 아님, 사용자 전환)
  • root에서 일반 사용자로 전환 시 비번 안 물어봄, 반대는 물어봄
# 새로운 사용자 만들고 전환
useradd sudouser
passwd sudouser
su - sudouser

# 슈퍼 사용자로 전환 (인자 없으면 슈퍼 사용자로 전환 의미)
su
# 암호 입력 → root 암호

# 슈퍼 사용자 환경으로 초기화하면서 전환 (권장)
su -

# 원래 사용자로 돌아가기
exit

su vs su - 차이:

  • su: 환경 변수/현재 디렉토리가 일반 사용자 상태로 유지됨
  • su -: 슈퍼 사용자의 환경으로 초기화됨 (권장)

sudo 명령어 - 명령어를 다른 사용자가 되어 실행

  • 한 명령어만 슈퍼 사용자로 실행. 명령어가 끝나면 일반 사용자로 돌아옴
  • 입력하는 암호는 현재 로그인한 사용자의 암호 (su는 슈퍼 사용자 암호)
sudo cat /etc/shadow
# [sudo] sudouser의 암호: 입력

su: 사용자 자체가 슈퍼 사용자로 전환 (exit 전까지 유지)
sudo: 명령어 하나만 슈퍼 사용자로 실행

sudo 설정 - /etc/sudoers

cat /etc/sudoers   # root로 실행
%wheel ALL=(ALL) ALL    # wheel 그룹에 속한 사용자는 모든 명령어 실행 가능

특정 사용자에게 sudo 권한 부여:

sudouser ALL=(ALL) ALL

sudoers 파일에 등록되지 않은 사용자는 sudo 사용 불가
sudo 권한을 준다는 것은 슈퍼 사용자의 권한을 주는 것과 마찬가지


3. Filesystem 및 disk 관리

파일시스템이란

  • OS에서 파일을 관리하도록 여러 가지 규칙과 방법을 정의하고 쉽게 사용할 수 있도록 기능을 제공해 주는 시스템
  • 파일을 저장하고 삭제하는 등 파일을 구성하는 여러 보조 정보들을 활용하여 통합적으로 관리하게 만들어 주는 체계
  • 디스크를 포맷한다 = 파일 시스템을 생성한다

주요 파일시스템

XFS

  • 64비트 저널링 파일 시스템
  • RHEL7 버전부터 기본 파일 시스템
  • b-trees를 사용하여 우수한 I/O 확장성을 제공하고 모든 사용자 데이터 및 메타데이터를 인덱스
  • 빠른 복구를 용이하게 하는 메타데이터 저널링 지원
  • 마운트되어 활성화된 상태로 조각 모음 및 확장 가능
  • extend 기반 할당 사용 (지연 할당, 사전 할당 지원)

디스크 조각화: 시간이 지나면서 파일의 수많은 조각이 디스크 전체에 흩어지게 되는 현상. 파일에 액세스하는 데 시간이 더 오래 걸리고 속도가 느려짐

BtrFS

  • "Butter" 또는 "Better" FS로 발음
  • "B-Tree File System"의 약자
  • 드라이브 풀링, 즉석 스냅샷, 투명한 압축 및 온라인 조각 모음 지원
  • 최근 개발된 차세대 리눅스 파일 시스템이 될 수도 있음

EXT4

  • 기존에 많이 사용되어 온 파일 시스템

파일시스템 구성

디스크 추가 (VirtualBox 기준)

# 가상머신 전원 종료 후 디스크 추가
poweroff

VirtualBox 관리자 → 가상머신 설정 → 저장소 → SATA 컨트롤러 우클릭 → 하드디스크 추가 → 만들기 → VDI 포맷 선택 → 이름 작성 → 추가 → 확인 → 가상머신 시작

디스크 확인

lsblk
lsblk -o NAME,SIZE,TYPE,FSTYPE
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   20G  0 disk
├─sda1            8:1    0    1G  0 part /boot
└─sda2            8:2    0   19G  0 part
sdb               8:16   0    2G  0 disk    ← 새로 추가한 디스크 (아직 파티션 없음)

파티셔닝 - fdisk

파티션으로 나누는 이유: 서로 다른 파티션에 다른 파일 시스템을 구현할 수 있기 때문

fdisk /dev/sdb

주요 명령어:

명령설명
m도움말 출력
p현재 파티션 테이블 출력
n새로운 파티션 생성
d파티션 삭제
l파티션 타입 목록 출력
w파티션 테이블에 저장하고 종료
q저장하지 않고 종료

파티션 생성 과정:

n → p (primary, 최대 4개 / 이후는 extended) → 번호 입력 → 시작 섹터 (기본값 2048) → 크기 지정 (+512M 등)
w (저장)

first sector: 1부터 있지만 2048부터 사용 가능 (그 전은 예약)
GPT 파티션은 g 입력 후 타입 변경 후 생성


파일시스템 생성 - mkfs

mkfs -t xfs /dev/sdb1

파일시스템 마운트

  • 파일시스템을 사용하여 파일을 저장하기 위해서는 특정한 디렉토리 경로로 연결해야 함
  • linux의 모든 파일은 / (루트 디렉토리) 하위의 경로를 가짐
# 마운트 포인트 생성
mkdir /data

# 마운트
mount -t xfs /dev/sdb1 /data

# 파일시스템 상태 확인
df -Th

# 마운트 해제
umount /dev/sdb1

부팅 시 자동 마운트 - /etc/fstab

# /etc/fstab 마지막 행에 추가
/dev/sdb1       /data   xfs     defaults        0 0
# fstab 기반으로 마운트
mount -a
df -Th

/etc/fstab에 정보 추가하면 부팅 시 마운트 자동으로 해줌


4. 프로세스 관리

프로세스란

  • 디스크에 있던 특정 파일들을 메모리에 적재하면서 처리하기 위해 CPU 쪽에서 스레드를 통해 연산 처리하는 것
  • 특정한 사용자로 명령어를 통해 프로그램을 실행했을 때 프로세스가 생성되며 고유한 ID를 할당받음 → PID (Process ID)
  • 실행시킨 프로세스 = 부모 프로세스 / 하위 프로세스 = 자식 프로세스 (PPID: Parent Process ID 정보 가짐)
  • 각 프로세스는 고유한 권한을 가지고 자체 가상 주소 공간에서 실행됨
  • IPC(Interactive Process Communication) 등 안전한 커널 관리 메커니즘을 통하지 않고는 다른 프로세스와 상호 작용할 수 없음 → 하나의 프로세스가 에러가 나도 다른 프로세스는 정상 작동

좀비 프로세스: 죽지 않고 계속 남아 있는 프로세스. 단순히 있는 건 문제 없으나, 자식이 죽고 좀비로 되어 있는데 부모가 안 죽이면 메모리 부족 문제가 발생할 수 있음


RPM (Redhat Package Manager)

  • Redhat에서 패키지를 쉽게 설치하고 관리하기 위해 만든 패키지 관리 프로그램
  • 복잡한 컴파일 단계를 자동으로 처리
  • .rpm 파일을 갖고 패키지 관리
옵션long 옵션설명
-q--query패키지 정보 질의
-i--install패키지 설치
-U--upgrade패키지 업그레이드
-e--erase패키지 삭제
-h--hash설치/업그레이드 프로그레스 상태 표시 (-v와 함께 사용)
-p--package패키지를 선택하여 query하거나 verify
-l--list패키지 안의 파일 정보 출력
-a--all모든 패키지 정보 출력
rpm -qa
rpm -qa | grep ssh
rpm -q openssh
rpm -ql openssh
rpm -qip vsftpd-3.0.2-29.el7_9.x86_64.rpm
rpm -ivh vsftpd-3.0.2-29.el7_9.x86_64.rpm
rpm -evh vsftpd

파이프라인 및 리다이렉션

파이프라인 (|)

CMD1 | CMD2
  • 두 개의 명령어를 파이프라인으로 이어주는 역할
  • CMD1의 출력을 CMD2의 입력으로 넣어줌
  • CMD2에는 grep 많이 사용 → 해당 내용 있으면 그것만 출력

3채널 (stdin/stdout/stderr)

채널번호설명
stdin0터미널 통해 입력받음
stdout1터미널 통해 출력
stderr2에러 출력

리다이렉션

cmd > result.txt        # stdout을 파일로 저장 (화면에는 출력 안 됨)
cmd < result.txt        # 파일을 표준 입력으로 사용
cmd 2> error.log        # stderr를 파일로 저장

스트림으로 처리한다 → 파일로 만들지 않고 흘려보낸다 (실시간 처리 가능)
리다이렉션은 재사용 가능하지만 지연시간 발생 가능 (단점)


Yum / DNF

  • 사용 가능한 소프트웨어 패키지의 rpm 파일이 저장되어 있는 온라인 저장소인 리포지토리와 함께 작동하도록 설계
  • 패키지 종속성을 자동으로 해결 (rpm은 수동으로 처리해야 했음)
  • 최근 RHEL 계열은 yum의 업그레이드 버전인 dnf 사용 (명령어 체계 거의 동일)
ls /etc/yum.repos.d/
cat /etc/yum.repos.d/CentOS-Base.repo

yum clean all            # 레포지토리 캐시 제거
yum install docker-ce    # 설치
yum list docker-ce       # 설치된 항목 확인
yum info docker-ce       # 상세 확인
yum remove docker-ce     # 삭제

Linux 프로세스 명령어

ps                          # 현재 사용자로 실행한 프로세스 확인
ps -e                       # 현재 시스템의 모든 프로세스 확인
ps -f                       # full-format으로 표시
ps -ef                      # grep으로 piping 해서 많이 사용
ps a                        # 다른 사용자의 프로세스 상태도 표시
ps x                        # 화면에 보이지 않는 프로세스까지 표시
ps u                        # 1분간 CPU, 메모리 점유율 포함 정보 표시
ps -ef | grep sshd          # 전체 프로세스 중 sshd 키워드로 검색
ps -ef | less
ps aux | less
ps -eo pid,ppid,%mem,%cpu,cmd    # 프로세스별 CPU, 메모리 사용률 확인

sleep 60 &                  # 백그라운드로 sleep 프로세스 생성 (& 없으면 foreground)
ps

ls /proc                    # 프로세스별 디렉토리 (커널 메모리에 마운트된 정보)

sleep: 아무것도 처리하지 않는 멍때리는 프로세스
&: 백그라운드로 실행 (출력 스트림 기다리는 작업이 필요 없음)
데드락: 서로 기다리는 상태


Foreground & Background

  • foreground: 프로세스가 실행 중일 때 사용자가 터미널을 사용해서 stdin을 사용하지 못함. 프로세스가 종료되어야 Shell의 prompt가 떨어짐
  • background: 프로세스가 실행 중이더라도 터미널을 사용해 stdin으로 명령어를 수행할 수 있음. 종료되면 출력이 뜨지 않음. 명령행 끝에 & 붙임
# foreground 실행 및 제어
sleep 60
<Ctrl + c>    # 즉시 종료
<Ctrl + z>    # 일시 중지

# background 실행
sleep 90 &

# 상태 확인 및 전환
jobs          # 프로세스 상태 확인
bg 1          # 중지된 프로세스를 background로 실행 (숫자 = job ID)
fg            # 바로 직전에 중지된 프로세스를 foreground로 실행

Service (Daemon)

  • 사용자가 직접 제어하지 않고 백그라운드에 실행시킨 후 여러 작업들을 수행하는 프로세스
  • 일반 백그라운드 프로세스와 달리 사용자와 상호작용하지 않음
  • 사용자 Input을 받기 위한 터미널이 없음
  • 사용자별 프로세스가 아닌 시스템 전체적으로 동작
  • systemd 프로세스로 (systemctl 명령어로) 관리. 높은 권한(root) 필요
# 서비스 목록 조회
systemctl list-units --type=service

systemctl status firewalld      # 상태 확인
systemctl stop firewalld        # 중지
systemctl disable firewalld     # 비활성화 (부팅 시 자동으로 올라오지 않음)
systemctl start firewalld       # 시작
systemctl enable firewalld      # 활성화

systemctl과 Container

systemctl 방식

  • 리눅스 부팅 시 가장 먼저 실행되는 systemd(PID 1)를 제어
  • 호스트 OS의 자원을 직접 공유
  • 항상 백그라운드에서 실행되어야 하는 핵심 서비스(네트워크, SSH, 로깅 등) 관리에 최적화
ps -ef | head

# nginx를 systemctl 방식으로 실행
dnf install nginx -y
systemctl start nginx

Container 방식

  • 호스트 OS의 커널을 공유하지만 네임스페이스(Namespace)와 cgroups라는 리눅스 커널 기능으로 프로세스를 격리된 공간에서 실행
  • 호스트 입장에서는 '하나의 격리된 프로세스'일 뿐
docker ps

# nginx를 컨테이너 방식으로 실행
docker run -d --name webserver -p 80:80 quay.io/uvelyster/nginx

docker 옵션:

옵션설명
-d백그라운드로 실행
--name컨테이너 이름
-p 80:80호스트 80 포트 → 컨테이너 80 포트 연결
quay.io/uvelyster/nginx컨테이너 이미지

프로세스 Signal

background 프로세스를 종료하기 위해 특별한 signal을 프로세스로 전송

kill -l           # signal 목록 확인
man 7 signal      # signal 상세 설명

주요 signal:

Signal번호설명
SIGHUP1터미널 끊김 감지
SIGINT2키보드 인터럽트 (Ctrl+c)
SIGKILL9강제 종료
SIGTERM15정상 종료 요청 (기본값, 권장)
SIGSTOP19프로세스 중지
SIGCONT18중지된 프로세스 재개
ps -ef | grep postfix         # postfix 프로세스의 PID 확인
kill -9 4249                  # 강제 종료 (-9 = SIGKILL)
systemctl restart postfix     # 재기동

foreground 종료: Ctrl + c
background 강제 종료: kill -9 PID
정상이라면 signal 안 던져도 자동으로 종료됨 (SIGTERM 권장)


프로세스 모니터링

ps -eo pid,ppid,%mem,%cpu,cmd    # 프로세스별 CPU, 메모리 사용률

top          # 실시간 모니터링
h            # top 실행 중 help
q            # top 종료

uptime       # 1분, 5분, 15분 부하 평균

1분 사용량이 15분보다 높으면 → 점점 더 사용량이 높아지고 있음 (부하되고 있다)

top 상단 요약 정보

top - 21:05:46 up 6:07, 1 user, load average: 0.00, 0.01, 0.05
# 현재 시각, 부팅 이후 경과 시간, 사용자 수, 부하 평균(1분/5분/15분)

Tasks: 113 total, 1 running, 112 sleeping, 0 stopped, 0 zombie
# 전체 프로세스 및 각 상태별 개수

%Cpu(s): 0.0 us, 6.2 sy, 0.0 ni, 93.8 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
# CPU 사용률

KiB Mem: 1882072 total, 1388248 free, 274156 used, 219668 buff/cache
# 전체 메모리, 여유 메모리, 사용 중인 메모리, 커널 버퍼 + 페이지 캐시

KiB Swap: 2097148 total, 2097148 free, 0 used. 1440600 avail Mem
# 전체 swap, 여유 swap, 사용 중인 swap, 여유 메모리 + 페이지 캐시

☁️ 클라우드 및 AWS 인프라 구성 마스터 가이드

  1. SDx 가상화와 클라우드, 클라우드의 특성

1) 가상화 (Virtualization)

과거의 IT 환경은 하드웨어 중심이었으며, 비효율성(하드웨어 성능의 10~20%만 사용, 유지비는 100% 지출)이 컸습니다. 물리적 제약을 깨고 소프트웨어가 하드웨어를 제어하기 시작하면서 등장한 개념이 가상화입니다.
가상화의 주요 목표는 더 나은 성능, 확장성, 안정성/가용성, 민첩성 획득 및 통합 보안/관리 도메인 생성입니다. 단일 컴퓨터를 여러 개별 컴퓨터로 만들거나, 논리적 네트워크 영역 구성, 여러 저장소를 하나로 묶거나 큰 저장소를 작게 나누는 등의 작업이 가능합니다.

2) SDx (Software Defined everything)

하드웨어의 제어권(Control Plane)을 물리적 장비에서 분리해 소프트웨어로 옮겨, 가상화된 리소스를 생성하고 물리적 리소스에 매핑시키는 기술입니다.

SDN (Software Defined Network): 가상의 네트워크

SDS (Software Defined Storage): 가상의 스토리지

SDDC (Software Defined Data Center): 가상의 데이터 센터

3) 가상화의 역사 (History)

1972년: 메인프레임 System/370 모델에서 시작 (당시 VM을 pseudo machine이라 명명). 리소스 할당 및 격리 제어 프로그램이 훗날 Hypervisor라는 이름을 얻음.

2003년 10월: x86용 최초 오픈소스 하이퍼바이저 Xen 도입 (Citrix XenServer, Oracle VM 등에 채택).

2007년 / 2010년: Redhat이 RHEL5에 Xen을 포함했으나, RHEL6(2010)에서 KVM으로 전환하며 오픈소스 하이퍼바이저의 전환점을 맞이함.

4) 가상화의 이점

짧은 평균 복원 시간 (MTTR): 실패한 서비스 복원에 전체 VM 스냅샷/백업을 활용하여 시간을 크게 단축.

노후화된 인프라 대안: 물리적 하드웨어(기대수명 3~4년)가 노후화되어도 VM은 영향을 받지 않고 하드웨어 업그레이드 후에도 지속 사용 가능.

Scale up이 쉬운 인프라: 호스트 용량이 남는 한 물리적 제한 없이 VM 용량 추가 가능.

리소스 활용: 적은 리소스로도 필요한 만큼 여러 VM을 동작시켜 가용성 추가 확보 및 효율적 관리.

운영 비용 절감: HA(고가용성) 구성을 가상 서버로 쉽게 변환 및 추가 가능하여 하드웨어 비용 절감.

5) 가상화의 종류 (목표 대상 기준)

데스크탑 가상화 (VDI): 장치에 의존하지 않고 어디서나 업무 환경 연결. 중앙 집중 관리/모니터링, 단순화된 배포 및 보안 설정 가능.

서버 가상화: 어플리케이션 환경을 구성. 백업 용이, 리소스 효율적 사용, 빠른 장애 대응.

어플리케이션 가상화: 원격 프로토콜/스트리밍 서비스를 패키징해 VM에 마운트 (예: Microsoft App-V, VMware App Volumes).

네트워크 가상화 (SDN): 물리적 스위치 없이 논리적인 가상 네트워크를 구성하여 안전하고 편하게 관리.

스토리지 가상화 (SDS): 물리적 공간을 가상화하여 할당. (file, block, object 유형). 공유 및 재사용성 향상.

6) 하이퍼바이저 (Hypervisor)

가상화의 본질인 추상화(Abstraction)와 격리(Isolation)를 달성하기 위해 하드웨어를 에뮬레이션(Emulation)하고 자원을 할당(Resource Allocation)하는 제어 프로그램입니다.

Type-1 (Native/Bare-metal): 하드웨어 위에 직접 설치. 오버헤드가 적고 보안이 강력 (엔터프라이즈 서버용).

예시: VMware ESXi, Xen, Microsoft Hyper-V, KVM (AWS EC2의 근간)

Type-2 (Hosted): 기존 운영체제(Host OS) 위에 애플리케이션처럼 설치. 설치가 쉽고 PC 테스트용으로 적합.

예시: Oracle VirtualBox, VMware Workstation

7) Virtualbox 기반 실습 환경 구성

설치: Oracle VirtualBox 설치 후 C++ 재배포 가능 패키지 설치 필요. 실습용 Rocky Linux ISO 파일 다운로드.

가상머신 생성: 무인설치 건너뛰기, 리소스 설정(기본 1vCPU, 2048MB RAM, 20GB 디스크).

네트워크 구성: 네트워크 관리자에서 호스트 전용(Host-only) 네트워크 설정 (실습 IP 대역: 172.16.0.1로 변경).

8) 클라우드 서비스 소개

가상화로 만든 추상화 계층을 통해 IT 리소스를 온디맨드 방식으로 대량 제공하며, 사용한 만큼 비용을 지불하는 모델입니다.

NIST의 클라우드 컴퓨팅 5대 필수 특성:

온디맨드 셀프 서비스: 버튼/API 호출로 임시 프로비저닝 가능.

광범위한 네트워크 액세스: 네트워크를 통한 기능 사용.

리소스 풀: 다중 테넌트 모델 기반 리소스 공유 할당.

신속함과 탄력성: 용량의 빠른 확장 및 축소.

측정된 서비스: 소비 통찰력을 위한 메트릭 제공.

클라우드 오퍼링 3가지 유형: 퍼블릭(대중 사용), 프라이빗(단일 조직 내), 하이브리드(퍼블릭+프라이빗 혼합).

CSP(Cloud Service Provider) 서비스 3대 분류:

IaaS: 가상머신, 스토리지, 네트워킹 등 기본 리소스 제공 (AWS EC2 등)

PaaS: 맞춤형 앱 배포 플랫폼 제공 (AWS Elastic Beanstalk 등)

SaaS: 인프라와 소프트웨어가 결합된 최종 어플리케이션 제공 (Microsoft 365 등)

9) Amazon Web Service (AWS) 개요

컴퓨팅(EC2), 스토리지(S3), 네트워킹 등의 솔루션을 REST API 및 HTTP 프로토콜을 통해 종량제(Pay-as-you-go)로 제공.

글로벌 인프라: 전 세계에 데이터 센터 분산. 리전(Region)과 여러 개의 가용 영역(AZ)으로 구성 (예: 한국 리전 ap-northeast-2는 4개의 가용영역 보유).

관리 콘솔: 루트 사용자는 계정 생성 시 사용하며, 평소에는 IAM 사용자로 로그인하여 작업.

  1. IAM 인증 및 AWS CLI

1) IAM 서비스 및 MFA 설정

AWS 계정은 리소스의 바구니이며, 모든 권한을 가진 '루트 사용자' 대신 접근을 제한한 IAM 사용자를 생성하여 사용해야 합니다.

MFA(멀티 팩터 인증): 아이디/비밀번호 외에 스마트폰 앱이나 물리 키를 통한 일회용 인증 코드를 추가로 요구하는 강력한 보안 장치.

가상 MFA 앱: Google Authenticator, Microsoft Authenticator, Duo Mobile 등.

IAM 사용자 생성: Management Console 접근 활성화 여부 선택, 권한 정책 할당(실습용 AdministratorAccess이나 실무에서는 권장 안 함).

2) AWS CLI 설정

API 진입점을 호출하여 터미널 내에서 인프라 생성 및 반복 작업을 자동화(Jenkins 등 연동)할 수 있는 도구입니다.

설치: curl로 다운로드 후 unzip, sudo ./aws/install 수행. aws --version으로 확인.

자격 증명 (Credentials): 콘솔 패스워드 대신 액세스 키(Access Key)와 시크릿 키(Secret Key) 사용. 생성 후 안전한 곳에 보관.

초기화: aws configure (키 정보, 리전, 출력 포맷 입력). aws configure list로 확인.

3) IAM 정책 (Policy) 및 역할 (Role) 구성

IAM 정책: 누가(Principal), 어떤 조건(Condition)에서, 어떤 서비스(Resource)의, 어떤 기능(Action)을, 허용(Allow)/거부(Deny)할지 명시한 JSON 문서.

예시: S3 버킷(s3://tmddnr-wave)의 목록 조회(s3:ListBucket) 권한 허용 JSON 작성.

aws iam create-policy로 정책 생성 후 aws iam attach-group-policy로 그룹에 바인딩.

IAM 역할: 리소스(예: EC2)에게 사용자 대신 작업을 수행할 수 있는 권한을 위임하는 객체.

Trust Policy(ec2.amazonaws.com)가 명시된 ec2trust.json으로 aws iam create-role 생성.

이후 aws iam attach-role-policy로 앞서 만든 정책을 역할에 바인딩.

4) 인스턴스 프로파일을 통한 EC2 권한 부여 (CLI 실습)

키페어 생성: aws ec2 create-key-pair 결과값을 .pem 파일로 저장 후 chmod 400 적용.

EC2 생성: aws ec2 run-instances (이미지, 인스턴스 타입, 키, 보안그룹, 서브넷 ID 지정).

인스턴스 프로파일: aws iam create-instance-profile 생성 -> 역할 추가 -> aws ec2 associate-iam-instance-profile로 가상머신에 프로파일 연결.

결과 테스트: ssh로 접속하여 내부에서 aws s3 ls가 에러 없이 실행되는지 확인.

  1. EC2 서버 구성 및 EBS Block Storage 연결

1) EC2 (Elastic Compute Cloud) 가상머신 구성

물리적 머신의 일부에 액세스하는 가상 머신 서비스입니다.

OS 이미지 (AMI): 사전 설치된 소프트웨어 번들. AWS는 맞춤형 하드웨어와 KVM을 결합한 Nitro 가상화(HVM)를 사용하여 베어메탈 수준의 성능을 제공합니다.

인스턴스 유형(크기 및 최적화):

T: 짧은 시간 높은 성능 발휘 (기본 성능형, 실습용 t3.micro)

M: CPU와 메모리 균형 (범용)

C: 컴퓨팅 최적화 (높은 CPU)

R: 메모리 최적화

D/I: 스토리지 최적화 (HDD/SSD)

X: 방대한 메모리 최적화

F: FPGA 기반 가속

P/G/CG: GPU 가속

키페어 구성: 비대칭 키 사용. Public Key는 클라우드에, Private Key는 로컬 유저가 보관.

2) 네트워크 및 보안그룹 (Firewall) 방화벽

보안 그룹: 인스턴스에 들어오고 나가는 인바운드(Ingress)/아웃바운드(Egress) 트래픽 제어.

규칙 정의: 방향, IP 프로토콜, 포트, 원본/대상을 기반으로 허용 여부 결정.

모범 사례: 꼭 필요한 포트(웹서버의 경우 HTTP 80, HTTPS 443)만 열어 가장 제한적인 규칙 적용(사람의 실수 방지).

3) 가상머신 연결 방법

Public IP 활용: 브라우저에서 직접 연결 기능 사용.

SSM Session Manager 활용: SSH 포트를 열지 않아도 연결 가능하여 보안 수준이 매우 높음.

EC2에 AmazonSSMManagedInstanceCore 정책이 부여된 IAM 역할을 생성 및 업데이트하고 재부팅하면 세션 매니저를 통한 연결 활성화.

4) EBS (Elastic Block Store) 볼륨 추가

파일 시스템 용량 확보를 위해 가상머신에 연결하는 블록 장치입니다.

볼륨 생성 시 가상머신과 동일한 가용영역(AZ)으로 설정 필수.

생성 후 EC2 인스턴스에 연결하고 서버 내에서 lsblk로 디스크 장착 여부 확인 (이후 파일시스템 생성 및 마운트 진행).

  1. VPC 네트워크 연결

1) VPC (Virtual Private Cloud) 구성

공용 클라우드 환경 안에 다른 사람과 격리된 '나만의 독립적인 사설 클라우드 환경'을 구성해 줍니다. IP 대역, 서브넷, 라우팅 테이블, 게이트웨이 등을 마음대로 제어할 수 있습니다.

사설 IP 대역: 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16

VPC 생성 시 기본 네트워크 ACL, DHCP 옵션 세트, 기본 라우팅 테이블이 자동 구성됩니다. (세부 조정 시 새로 만드는 것 권장).

2) 서브넷 (Subnet) 구성

VPC CIDR 범위를 넘지 않는 선에서 용도별로 네트워크를 분할합니다.

외부 통신용 Public Subnet / 클라우드 내부 통신용 Private Subnet. (기본 생성 시 Private 상태).

서브넷 설정 편집에서 '퍼블릭 IPv4 주소 자동 할당 활성화'를 켜면 배치되는 VM이 공인 IP를 받음.

3) 인터넷 게이트웨이 (IGW) 및 라우팅 테이블

서브넷을 Public으로 만들기 위한 과정입니다.

인터넷 게이트웨이: VPC 내부 트래픽을 외부 인터넷으로 내보내는 문. 생성 후 VPC에 연결 (하나의 VPC당 1개의 IGW만 가능).

라우팅 테이블: 트래픽의 목적지 경로를 지정. 새로운 라우팅 테이블 생성 후 0.0.0.0/0 (모든 트래픽)의 대상을 '인터넷 게이트웨이'로 향하게 편집하고, 해당 서브넷에 연결 명시.

4) NAT 게이트웨이

외부에서 들어오는 요청은 차단하고, 내부에서 외부로 나가는 요청(소프트웨어 패치 다운로드 등)만 허용하는 게이트웨이입니다.

전송 중인 패킷의 IP 헤더를 수정(다시 매핑).

프라이빗 서브넷의 인터넷 통신을 위해 사용 (NAT 인스턴스 방식도 존재).

5) VPC 엔드포인트

VPC 내부가 아닌 AWS에서 직접 관리하는 서비스(S3, DynamoDB 등)에 인터넷 게이트웨이나 NAT 없이 비공개(Private)로 연결하게 해주는 가상 장치입니다. (보안 강화, 비용 절감 이점).

유형:

인터페이스 엔드포인트: 다양한 서비스 지원.

게이트웨이 엔드포인트: S3와 DynamoDB 전용.

생성 시 VPC와 라우팅 테이블을 선택하면 해당 경로를 통해 직접 비공개 통신이 가능해집니다.

0개의 댓글