RHCSA Certification Guide
Red Hat Certified System Administrator — RHEL 기반 실기 리눅스 관리자 자격증
🎯 RHCSA란?
Red Hat Certified System Administrator (RHCSA) 는 Red Hat이 운영하는 실기(performance-based) 리눅스 시스템 관리자 자격증. RHEL 환경에서 실제 터미널로 작업을 수행하는 방식으로 평가하며, Red Hat 자격증 체계의 기초이자 RHCE 취득을 위한 필수 선행 조건.
시험 요약
| 항목 | 내용 |
|---|---|
| 시험 코드 | EX200 |
| 주관 | Red Hat |
| 형태 | 온라인 원격 감독 또는 테스트 센터, 실기(performance-based) |
| 시간 | 3시간 |
| 합격 기준 | 210/300 (70%) |
| 비용 | $500 USD (리트라이 1회 포함) |
| 유효기간 | 3년 |
| 선수 조건 | 없음 (RH124 + RH134 권장) |
| 배포판 | RHEL 10 (2025년 기준 최신) |
시험 환경
- Red Hat 원격 시험 시스템 또는 테스트 센터
- 라이브 RHEL 터미널 환경 제공
- 허용 리소스: RHEL 내장 문서 (man 페이지,
/usr/share/doc) - 비허용: 외부 웹사이트, PDF, 메모, 별도 문서, 인터넷 접속
- 구매 후 12개월 내 예약
- 재부팅 후에도 설정이 유지되어야 함 (Persistent Configuration)
📊 시험 도메인 (출제 범위)
flowchart TD EX200["RHCSA EX200"] subgraph Domains["출제 도메인"] D1["Essential Tools<br/>파일, 권한, SSH, man"] D2["Operate Running Systems<br/>부팅, 프로세스, 로그, 서비스"] D3["Configure Local Storage<br/>파티션, LVM, 마운트"] D4["File Systems<br/>ext4/xfs/VFAT, NFS, autofs, LVM 확장"] D5["Deploy & Maintain Systems<br/>스케줄링, 서비스, 부트로더, 패키지"] D6["Manage Networking<br/>IPv4/IPv6, DNS, firewalld"] D7["Manage Users & Groups<br/>사용자, 그룹, sudo"] D8["Manage Security<br/>firewalld, SELinux, SSH 키"] D9["Manage Software<br/>RPM, Flatpak, 저장소 관리"] D10["Shell Scripts<br/>조건문, 반복문, 입력 처리"] end EX200 --> Domains
1. Understand and Use Essential Tools
기본 명령어, 파일 조작, 권한, 원격 접속 등 기초.
| 주제 | 핵심 내용 |
|---|---|
| 셸 명령어 | 올바른 문법으로 명령어 실행 |
| I/O 리다이렉션 | >, >>, |, 2> 등 |
| 텍스트 분석 | grep, 정규표현식 |
| 원격 접속 | SSH 접속 |
| 사용자 전환 | multiuser target에서 로그인/전환 |
| 아카이브/압축 | tar, gzip, bzip2 |
| 텍스트 편집 | 파일 생성 및 편집 (vim 필수) |
| 파일 관리 | 생성, 삭제, 복사, 이동, 하드/소프트 링크 |
| 권한 | ugo/rwx 표준 권한 설정/변경 |
| 시스템 문서 | man, info, /usr/share/doc 활용 |
연습 포인트:
# I/O 리다이렉션
find / -name "*.conf" 2>/dev/null > /tmp/configs.txt
ls -la | grep "^d" | tee directories.txt
# grep + 정규표현식
grep -E "^root|^nobody" /etc/passwd
grep -ri "error" /var/log/ 2>/dev/null
# 링크
ln /path/to/file /path/to/hardlink # 하드 링크
ln -s /path/to/file /path/to/symlink # 심볼릭 링크
# 권한
chmod 755 script.sh
chmod u+s /usr/bin/program # setuid
chmod g+s /shared/dir # setgid
chmod +t /tmp # sticky bit2. Manage Software
RPM 패키지 및 Flatpak 관리 (RHEL 10에서 추가됨).
| 주제 | 핵심 내용 |
|---|---|
| RPM 저장소 | dnf config-manager, /etc/yum.repos.d/ |
| RPM 패키지 | dnf install/remove/update, rpm -qa |
| Flatpak 저장소 | Flatpak 리모트 설정 |
| Flatpak 패키지 | Flatpak 애플리케이션 설치/제거 |
연습 포인트:
# RPM 저장소 설정
dnf config-manager --add-repo https://example.com/repo
dnf repolist
# RPM 패키지 관리
dnf install -y httpd
dnf remove httpd
dnf search nginx
dnf info nginx
rpm -qa | grep httpd
rpm -ql httpd # 패키지 파일 목록
# Flatpak (RHEL 10 신규)
flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
flatpak install flathub org.mozilla.firefox
flatpak list
flatpak uninstall org.mozilla.firefox3. Create Simple Shell Scripts
조건문, 반복문, 입력 처리 등 기본 스크립트 작성.
| 주제 | 핵심 내용 |
|---|---|
| 조건문 | if, test, [] |
| 반복문 | for (파일, 커맨드라인 입력 처리) |
| 스크립트 입력 | $1, $2 등 위치 매개변수 |
| 명령 출력 처리 | 명령 실행 결과를 스크립트 내에서 활용 |
연습 포인트:
#!/bin/bash
# 사용자 생성 스크립트 예시
if [ $# -lt 1 ]; then
echo "Usage: $0 <username>"
exit 1
fi
USERNAME=$1
if id "$USERNAME" &>/dev/null; then
echo "User $USERNAME already exists"
else
useradd -m "$USERNAME"
echo "User $USERNAME created"
fi
# for 루프 - 파일 처리
for FILE in /etc/*.conf; do
echo "Config: $(basename $FILE)"
done
# 명령 출력 활용
DISK_USAGE=$(df -h / | tail -1 | awk '{print $5}')
echo "Root disk usage: $DISK_USAGE"4. Operate Running Systems
부팅, 프로세스 관리, 로깅, 서비스 관리 등 시스템 운영.
| 주제 | 핵심 내용 |
|---|---|
| 부팅 | 정상 부팅, 재부팅, 셧다운 |
| 부팅 타겟 | systemctl set-default, rescue/emergency target |
| 부팅 중단 | 부팅 프로세스 인터럽트하여 시스템 접근 (root 패스워드 리셋) |
| 프로세스 관리 | CPU/메모리 집약 프로세스 식별, kill |
| 프로세스 스케줄링 | nice, renice |
| 튜닝 프로파일 | tuned-adm |
| 로그 | journalctl, 시스템 로그 파일 해석 |
| 저널 보존 | Persistent journal 설정 |
| 네트워크 서비스 | 시작/중지/상태 확인 |
| 파일 전송 | 시스템 간 안전한 파일 전송 (scp, rsync) |
연습 포인트:
# 부팅 타겟
systemctl get-default
systemctl set-default multi-user.target
systemctl isolate rescue.target
# root 패스워드 리셋 (부팅 인터럽트)
# GRUB에서 e → linux 줄 끝에 rd.break 추가
# mount -o remount,rw /sysroot
# chroot /sysroot
# passwd root
# touch /.autorelabel
# exit → reboot
# 프로세스 관리
top # CPU/메모리 모니터링
ps aux --sort=-%mem | head
kill -9 <PID>
nice -n 10 ./script.sh # 낮은 우선순위로 실행
renice -n 5 -p <PID>
# 튜닝
tuned-adm active
tuned-adm list
tuned-adm profile throughput-performance
# 저널 영구 저장
mkdir -p /var/log/journal
systemd-tmpfiles --create --prefix /var/log/journal
systemctl restart systemd-journald
journalctl --disk-usage5. Configure Local Storage
파티션, LVM, 마운트, 스왑 관리.
| 주제 | 핵심 내용 |
|---|---|
| 파티션 | GPT 디스크에서 파티션 생성/삭제 (gdisk, parted) |
| PV 생성/삭제 | pvcreate, pvremove |
| VG 할당 | vgcreate, vgextend |
| LV 생성/삭제 | lvcreate, lvremove |
| UUID/Label 마운트 | /etc/fstab에 UUID 또는 Label로 설정 |
| 비파괴적 추가 | 기존 시스템에 파티션, LV, 스왑 추가 |
연습 포인트:
# 파티션 생성 (GPT)
gdisk /dev/sdb
# n → 파티션 번호 → 시작/끝 → 타입(8e00 for LVM) → w
# LVM 전체 흐름
pvcreate /dev/sdb1
vgcreate vg_data /dev/sdb1
lvcreate -L 5G -n lv_data vg_data
mkfs.xfs /dev/vg_data/lv_data
# UUID로 마운트
mkdir /mnt/data
blkid /dev/vg_data/lv_data
echo "UUID=<uuid> /mnt/data xfs defaults 0 0" >> /etc/fstab
mount -a # 검증 필수
# 스왑 추가
lvcreate -L 1G -n lv_swap vg_data
mkswap /dev/vg_data/lv_swap
swapon /dev/vg_data/lv_swap
echo "/dev/vg_data/lv_swap swap swap defaults 0 0" >> /etc/fstab
swapon --show6. Create and Configure File Systems
파일시스템 생성, NFS 마운트, autofs, LVM 확장.
| 주제 | 핵심 내용 |
|---|---|
| 파일시스템 생성 | VFAT, ext4, xfs 생성/마운트/언마운트 |
| NFS 마운트 | 네트워크 파일시스템 마운트/언마운트 |
| autofs | 자동 마운트 설정 |
| LVM 확장 | 기존 LV 확장 |
| 권한 문제 진단 | 파일 권한 문제 진단/수정 |
연습 포인트:
# 파일시스템 생성
mkfs.ext4 /dev/sdb1
mkfs.xfs /dev/sdb2
mkfs.vfat /dev/sdb3
# NFS 마운트
mount -t nfs server:/export/share /mnt/nfs
# fstab 영구 설정
echo "server:/export/share /mnt/nfs nfs defaults 0 0" >> /etc/fstab
# autofs 설정
dnf install -y autofs
# /etc/auto.master에 추가:
# /mnt/auto /etc/auto.nfs
# /etc/auto.nfs 파일 생성:
# share -rw,sync server:/export/share
systemctl enable --now autofs
# LVM 확장
lvextend -L +2G /dev/vg_data/lv_data
xfs_growfs /mnt/data # xfs
# resize2fs /dev/vg_data/lv_data # ext47. Deploy, Configure, and Maintain Systems
작업 스케줄링, 서비스 관리, 부트 타겟, 시간 동기화, 패키지 관리, 부트로더.
| 주제 | 핵심 내용 |
|---|---|
| 스케줄링 | at, cron, systemd timer |
| 서비스 관리 | 시작/중지, 부팅 시 자동 시작 |
| 부트 타겟 | 특정 타겟으로 자동 부팅 설정 |
| 시간 동기화 | 타임 서비스 클라이언트 설정 |
| 소프트웨어 | CDN, 원격 저장소, 로컬 파일시스템에서 설치/업데이트 |
| 부트로더 | 시스템 부트로더 수정 |
연습 포인트:
# cron
crontab -e
# 매일 3시에 백업
# 0 3 * * * /opt/scripts/backup.sh
# systemd timer
systemctl list-timers
# at (1회성 스케줄)
at now + 5 minutes <<< "/opt/scripts/cleanup.sh"
atq # 예약 목록
# 시간 동기화
timedatectl set-timezone Asia/Seoul
timedatectl set-ntp true
# /etc/chrony.conf에서 NTP 서버 설정
systemctl restart chronyd
chronyc tracking
# 부트 타겟
systemctl set-default graphical.target
systemctl set-default multi-user.target8. Manage Basic Networking
IP 설정, DNS, 방화벽 관리.
| 주제 | 핵심 내용 |
|---|---|
| IPv4/IPv6 | IP 주소 설정 |
| 호스트명 확인 | hostname resolution 설정 |
| 네트워크 서비스 | 부팅 시 자동 시작 |
| 방화벽 | firewalld/firewall-cmd |
연습 포인트:
# IP 설정 (nmcli)
nmcli con show
nmcli con mod "ens160" ipv4.addresses 192.168.1.100/24
nmcli con mod "ens160" ipv4.gateway 192.168.1.1
nmcli con mod "ens160" ipv4.dns 8.8.8.8
nmcli con mod "ens160" ipv4.method manual
nmcli con up "ens160"
# 호스트명
hostnamectl set-hostname server1.example.com
echo "192.168.1.100 server1.example.com" >> /etc/hosts
# 방화벽
firewall-cmd --add-service=http --permanent
firewall-cmd --add-port=8080/tcp --permanent
firewall-cmd --reload
firewall-cmd --list-all9. Manage Users and Groups
사용자/그룹 생성, 패스워드 정책, sudo 설정.
| 주제 | 핵심 내용 |
|---|---|
| 사용자 관리 | 생성, 삭제, 수정 |
| 패스워드 | 패스워드 변경, aging 설정 |
| 그룹 관리 | 생성, 삭제, 수정, 멤버십 |
| sudo | 특권 접근 설정 |
연습 포인트:
# 사용자 생성
useradd -m -s /bin/bash -G developers jay
passwd jay
# 패스워드 aging
chage -M 90 -m 7 -W 14 jay # 최대 90일, 최소 7일, 경고 14일
chage -l jay # aging 정보 확인
# 그룹 관리
groupadd devops
usermod -aG devops jay
id jay
# sudo 설정
visudo
# jay ALL=(ALL) ALL
# %devops ALL=(ALL) NOPASSWD: ALL10. Manage Security
방화벽, 기본 권한, SSH 키 인증, SELinux.
| 주제 | 핵심 내용 |
|---|---|
| 방화벽 | firewall-cmd/firewalld 설정 |
| 기본 권한 | umask 관리 |
| SSH 키 인증 | SSH 키 기반 인증 설정 |
| SELinux 모드 | enforcing/permissive 설정 |
| SELinux 컨텍스트 | 파일/프로세스 컨텍스트 조회 |
| SELinux 파일 복원 | 기본 파일 컨텍스트 복원 |
| SELinux 포트 | 포트 레이블 관리 |
| SELinux boolean | boolean 설정 변경 |
연습 포인트:
# SSH 키 인증
ssh-keygen -t ed25519
ssh-copy-id user@remote-server
# SELinux 모드
getenforce
setenforce 0 # Permissive (임시)
# /etc/selinux/config에서 SELINUX=enforcing (영구)
# SELinux 컨텍스트
ls -Z /var/www/html/
ps auxZ | grep httpd
# SELinux 파일 컨텍스트 복원
restorecon -Rv /var/www/html/
# SELinux 포트 관리
semanage port -l | grep http
semanage port -a -t http_port_t -p tcp 8888
# SELinux boolean
getsebool -a | grep httpd
setsebool -P httpd_can_network_connect on⚖️ RHCSA vs LFCS 비교
| 항목 | RHCSA | LFCS |
|---|---|---|
| 주관 | Red Hat | Linux Foundation |
| 시험 코드 | EX200 | N/A |
| 배포판 | RHEL 전용 | 중립 (배포판 무관) |
| 형태 | 실기 (터미널) | 실기 (터미널) |
| 시간 | 3시간 | 2시간 |
| 합격 기준 | 70% (210/300) | 67% |
| 비용 | $500 (리트라이 포함) | $445 (리트라이 포함) |
| 유효기간 | 3년 | 2년 |
| 범위 | 깊고 좁음 (RHEL 생태계 집중) | 넓고 얕음 (여러 배포판 포괄) |
| SELinux | 깊이 있게 출제 | 가벼운 수준 |
| Flatpak | 포함 (RHEL 10) | 미포함 |
| 후속 자격증 | RHCE (필수 선행) | 없음 |
| 인지도 | 엔터프라이즈/공공에서 강세 | 국제적/벤더 중립 |
flowchart LR LFCS["LFCS<br/>벤더 중립, 폭넓은 기초"] RHCSA["RHCSA<br/>RHEL 특화, 깊이"] RHCE["RHCE<br/>Ansible 자동화"] RHCA["RHCA<br/>Red Hat Architect"] LFCS -.->|"병행 가능"| RHCSA RHCSA -->|"필수"| RHCE RHCE -->|"Specialist 5개"| RHCA
결론: LFCS와 RHCSA는 범위가 상당 부분 겹치므로 병행 준비 효율적. LFCS로 벤더 중립 역량 증명, RHCSA로 Red Hat 생태계 전문성 확보. RHCE를 취득하면 RHCSA도 자동 갱신(3년).
📖 학습 리소스
공식 교육 과정
| 과정 | 설명 | 비용 |
|---|---|---|
| RH124 — Red Hat System Administration I | 리눅스 기초, 파일 관리, 사용자, 서비스 | 교육 별도 |
| RH134 — Red Hat System Administration II | 스토리지, 보안, 부팅, 네트워크 심화 | 교육 별도 |
| RH199 — RHCSA Rapid Track | RH124 + RH134 속성 과정 | 교육 별도 |
추천 도서
| 도서 | 저자 | 특징 |
|---|---|---|
| RHCSA Red Hat Enterprise Linux 9 | Asghar Ghori | 99개 실습, 74개 DIY 랩, 4개 모의시험 |
| RHCSA/RHCE Red Hat Linux Certification Study Guide | Michael Jang, Alessandro Orsaria | 시험 목표별 체계적 구성 |
무료/저가 학습 자료
| 리소스 | 설명 |
|---|---|
| Red Hat 공식 시험 목표 | 출제 범위 확인 |
| Red Hat Developer Subscription | RHEL 무료 다운로드 (개발용) |
| Red Hat Skills Assessment | 무료 역량 평가 |
| Sander van Vugt — RHCSA 시리즈 (Udemy/O’Reilly) | 실습 중심 비디오 강의 |
🗓️ 학습 계획 (8~12주)
gantt title RHCSA 학습 계획 dateFormat YYYY-MM-DD section 기초 (2주) RHEL 랩 환경 구축 :a1, 2026-03-01, 3d Essential Tools :a2, after a1, 7d Shell Scripts :a3, after a2, 4d section 시스템 운영 (3주) Operate Running Systems :a4, after a3, 7d Users and Groups :a5, after a4, 5d Deploy and Maintain Systems :a6, after a5, 7d section 스토리지/네트워크 (3주) Configure Local Storage :a7, after a6, 7d File Systems (NFS, autofs) :a8, after a7, 7d Manage Networking :a9, after a8, 5d section 보안 (2주) Manage Security (SELinux 집중) :a10, after a9, 10d Manage Software (RPM, Flatpak) :a11, after a10, 4d section 실전 준비 (2주) 모의시험 1차 :a12, after a11, 3d 약점 보완 :a13, after a12, 7d 모의시험 2차 :a14, after a13, 3d section 시험 시험 응시 :milestone, after a14, 0d
💡 시험 팁
SELinux — 가장 중요한 차별점
LFCS와 가장 큰 차이. 반드시 숙지해야 할 명령어:
# 필수 패키지
dnf install -y setroubleshoot-server setools-console
# 문제 해결 흐름
ausearch -m AVC -ts recent # AVC 거부 로그 확인
sealert -a /var/log/audit/audit.log # 상세 분석
semanage fcontext -l | grep <path> # 기대 컨텍스트 확인
restorecon -Rv <path> # 컨텍스트 복원재부팅 영구 설정 (Persistent)
시험의 모든 설정은 재부팅 후에도 유지되어야 함:
| 영역 | 영구 설정 방법 |
|---|---|
| 마운트 | /etc/fstab |
| 방화벽 | firewall-cmd --permanent + --reload |
| SELinux | setsebool -P, /etc/selinux/config |
| 서비스 | systemctl enable |
| 네트워크 | nmcli con mod (자동 저장) |
| 커널 파라미터 | /etc/sysctl.d/ |
| 시간대 | timedatectl set-timezone |
시간 관리
- 약 15~20개 태스크를 3시간에 해결
- 문제당 약 10분 배분
- 쉬운 문제 먼저 풀어 점수 확보
- LVM, SELinux 관련 문제는 시간 소요가 크므로 후반에 배치
man페이지 활용 연습 필수
root 패스워드 리셋
거의 매 시험 출제되는 핵심 태스크:
1. 부팅 시 GRUB 메뉴에서 'e' 키
2. linux 줄 끝에 rd.break 추가
3. Ctrl+X로 부팅
4. mount -o remount,rw /sysroot
5. chroot /sysroot
6. passwd root
7. touch /.autorelabel ← SELinux 필수!
8. exit → exit (재부팅)
🔗 관련 문서
- Certification Roadmap — 전체 자격증 로드맵
- LFCS Certification Guide — LFCS 시험 가이드
- RHCE Certification Guide — RHCE 시험 가이드 (RHCSA 후속)
- Linux Basics — 리눅스 기초 학습 자료