RHCSA 9 (EX200) Study Guide

Hands-on study notes for RHCSA 9 (EX200) exam preparation. Based on Sander van Vugt’s "Red Hat RHCSA 9 Cert Guide" (Pearson IT Certification).


Exam Overview

Exam Code

EX200

Duration

3 hours

Format

Performance-based (hands-on tasks)

Passing Score

210 out of 300 (70%)

Environment

RHEL 9 virtual machines

Study Approach

This is a hands-on first approach:

  1. Read - Review chapter concepts

  2. Type - Execute every command (no copy-paste for learning)

  3. Document - Capture what works, what breaks

  4. Diagram - Visualize with D2 diagrams

  5. Repeat - Practice until muscle memory

The exam is 100% practical. You must TYPE commands from memory. Reading alone is insufficient.


Chapter Progress

Chapter Topic Status Notes

1

Installing RHEL

[ ] Not Started

VM setup, kickstart

2

Essential Tools

[ ] Not Started

man, vim, redirects

3

Text File Management

[ ] Not Started

head, tail, grep, regex

4

File System Hierarchy

[ ] Not Started

FHS, mounting

5

User & Group Management

[ ] Not Started

useradd, passwd, groups

6

Permissions

[ ] Not Started

chmod, chown, ACLs

7

Network Configuration

[ ] Not Started

nmcli, ip, hostname

8

Software Management

[ ] Not Started

dnf, rpm, repos

9

Process Management

[ ] Not Started

ps, top, kill, nice

10

Scheduled Tasks

[ ] Not Started

cron, at, systemd timers

11

systemd

[ ] Not Started

systemctl, units, targets

12

Logging

[ ] Not Started

journalctl, rsyslog

13

Storage

[ ] Not Started

partitions, LVM, swap

14

File Systems

[ ] Not Started

xfs, ext4, formatting

15

NFS & Autofs

[ ] Not Started

mounts, automount

16

Boot Process

[ ] Not Started

GRUB2, dracut, rescue

17

SELinux

[ ] Not Started

contexts, booleans, troubleshooting

18

SSH & Remote Access

[ ] Not Started

sshd, keys, tunnels

19

Firewall

[ ] Not Started

firewalld, zones, services

20

Time Synchronization

[ ] Not Started

chronyd, timedatectl

21

Containers

[ ] Not Started

podman basics

22

Exam Preparation

[ ] Not Started

Practice exam


Architecture Diagrams

D2 source files are in examples/rhcsa/d2/. Render with Kroki or d2 CLI.

RHEL System Layers

# RHEL System Architecture Layers
# Edit this D2 diagram as you learn

direction: down

title: RHEL 9 System Layers {
  shape: text
  style.font-size: 24
}

# User space applications
apps: Applications {
  shape: rectangle
  style.fill: "#e3f2fd"

  web: Web Server
  db: Database
  custom: Custom Apps
}

# Middleware / Services
services: System Services {
  shape: rectangle
  style.fill: "#fff3e0"

  systemd: systemd (PID 1)
  sshd: sshd
  crond: crond
  firewalld: firewalld
}

# Libraries
libs: Libraries (glibc, etc.) {
  shape: rectangle
  style.fill: "#f3e5f5"
}

# System Calls
syscall: System Call Interface {
  shape: rectangle
  style.fill: "#ffecb3"
  style.stroke: "#ff6f00"
  style.stroke-width: 2
}

# Kernel
kernel: Linux Kernel {
  shape: rectangle
  style.fill: "#c8e6c9"
  style.stroke: "#2e7d32"
  style.stroke-width: 2

  process: Process Management
  memory: Memory Management
  fs: File Systems
  network: Networking
  device: Device Drivers
}

# Hardware
hardware: Hardware {
  shape: rectangle
  style.fill: "#90a4ae"
  style.stroke: "#37474f"
  style.stroke-width: 2

  cpu: CPU
  ram: RAM
  disk: Storage
  nic: Network
}

# Connections
apps -> services
services -> libs
libs -> syscall
syscall -> kernel
kernel -> hardware

# User vs Kernel space divider
user_space: User Space {
  shape: text
  style.fill: "#e8f5e9"
}

kernel_space: Kernel Space {
  shape: text
  style.fill: "#ffebee"
}

File System Hierarchy

# Linux File System Hierarchy Standard (FHS)
# Edit this D2 diagram as you learn

direction: down

title: RHEL 9 File System Hierarchy {
  shape: text
  style.font-size: 24
}

root: "/" (root) {
  shape: rectangle
  style.fill: "#ffcdd2"
  style.stroke: "#c62828"
  style.stroke-width: 3
}

# Essential directories
bin: /bin {
  shape: rectangle
  style.fill: "#c8e6c9"
  label: "/bin\n(essential commands)"
}

sbin: /sbin {
  shape: rectangle
  style.fill: "#c8e6c9"
  label: "/sbin\n(system commands)"
}

etc: /etc {
  shape: rectangle
  style.fill: "#fff9c4"
  label: "/etc\n(configuration)"
}

home: /home {
  shape: rectangle
  style.fill: "#e3f2fd"
  label: "/home\n(user directories)"
}

root_home: /root {
  shape: rectangle
  style.fill: "#f3e5f5"
  label: "/root\n(root's home)"
}

var: /var {
  shape: rectangle
  style.fill: "#ffe0b2"
  label: "/var\n(variable data)"
}

tmp: /tmp {
  shape: rectangle
  style.fill: "#b3e5fc"
  label: "/tmp\n(temporary files)"
}

usr: /usr {
  shape: rectangle
  style.fill: "#d1c4e9"
  label: "/usr\n(user programs)"
}

boot: /boot {
  shape: rectangle
  style.fill: "#ffccbc"
  label: "/boot\n(bootloader, kernel)"
}

dev: /dev {
  shape: rectangle
  style.fill: "#b2dfdb"
  label: "/dev\n(device files)"
}

proc: /proc {
  shape: rectangle
  style.fill: "#f0f4c3"
  label: "/proc\n(process info)"
}

sys: /sys {
  shape: rectangle
  style.fill: "#f0f4c3"
  label: "/sys\n(system info)"
}

mnt: /mnt {
  shape: rectangle
  style.fill: "#cfd8dc"
  label: "/mnt\n(mount point)"
}

# Connections
root -> bin
root -> sbin
root -> etc
root -> home
root -> root_home
root -> var
root -> tmp
root -> usr
root -> boot
root -> dev
root -> proc
root -> sys
root -> mnt

# Subdirectories of interest
var_log: /var/log {
  shape: rectangle
  style.fill: "#ffe0b2"
}

var_spool: /var/spool {
  shape: rectangle
  style.fill: "#ffe0b2"
}

usr_bin: /usr/bin {
  shape: rectangle
  style.fill: "#d1c4e9"
}

usr_sbin: /usr/sbin {
  shape: rectangle
  style.fill: "#d1c4e9"
}

usr_local: /usr/local {
  shape: rectangle
  style.fill: "#d1c4e9"
}

etc_ssh: /etc/ssh {
  shape: rectangle
  style.fill: "#fff9c4"
}

etc_systemd: /etc/systemd {
  shape: rectangle
  style.fill: "#fff9c4"
}

var -> var_log
var -> var_spool

usr -> usr_bin
usr -> usr_sbin
usr -> usr_local

etc -> etc_ssh
etc -> etc_systemd

# Legend
legend: {
  label: Directory Types
  style.fill: "#fafafa"

  static: "Static = rarely changes"
  variable: "Variable = changes often"
  virtual: "Virtual = /proc, /sys (kernel)"
}

Command Quick Reference

File Operations

# File Operations
# ============================================

# List files with details
ls -la /etc/

# Copy files
cp /etc/passwd /tmp/passwd.bak

# Copy directories recursively
cp -r /etc/ssh /tmp/ssh-backup/

# Move/rename
mv oldname.txt newname.txt

# Remove files (careful!)
rm file.txt

# Remove directories
rm -rf /tmp/testdir/

# Create directory with parents
mkdir -p /path/to/nested/dir

# Find files by name
find /etc -name "*.conf"

# Find files by type
find /var -type f -mtime -1  # modified in last day

# Read file contents
cat /etc/hostname
head -20 /var/log/messages
tail -f /var/log/messages

# File info
file /bin/bash
stat /etc/passwd

User Management

# User Management
# ============================================

# Create user
sudo useradd -m -s /bin/bash newuser

# Set password
sudo passwd newuser

# Create user with specific UID/GID
sudo useradd -u 1500 -g users -c "Test User" testuser

# Modify user
sudo usermod -aG wheel existinguser  # add to group
sudo usermod -s /sbin/nologin svcacct  # change shell

# Delete user
sudo userdel -r olduser  # -r removes home dir

# View user info
id username
getent passwd username

# Create group
sudo groupadd developers

# Modify group
sudo groupmod -n newname oldname

# Delete group
sudo groupdel groupname

# View group membership
groups username
getent group groupname

Service Management

# Service Management (systemd)
# ============================================

# List all services
systemctl list-units --type=service

# List enabled services
systemctl list-unit-files --type=service | grep enabled

# Service status
systemctl status sshd

# Start/stop/restart
sudo systemctl start sshd
sudo systemctl stop sshd
sudo systemctl restart sshd
sudo systemctl reload sshd  # reload config without restart

# Enable/disable at boot
sudo systemctl enable sshd
sudo systemctl disable sshd

# Enable and start in one command
sudo systemctl enable --now sshd

# Check if enabled
systemctl is-enabled sshd
systemctl is-active sshd

# View logs for service
journalctl -u sshd
journalctl -u sshd -f  # follow
journalctl -u sshd --since "1 hour ago"

# Mask/unmask (prevent starting)
sudo systemctl mask sshd
sudo systemctl unmask sshd

# Reload systemd after unit file changes
sudo systemctl daemon-reload

Practice Environment

Requirements

  • RHEL 9 or compatible (Rocky Linux 9, AlmaLinux 9)

  • 2GB RAM minimum per VM

  • 20GB disk space per VM

  • KVM/QEMU or VirtualBox

┌─────────────────────────────────────────────────────────┐
│                    LAB ENVIRONMENT                       │
├─────────────────────────────────────────────────────────┤
│                                                          │
│   ┌─────────────┐     ┌─────────────┐                   │
│   │  server1    │     │  server2    │                   │
│   │  RHEL 9     │────▶│  RHEL 9     │                   │
│   │  Primary    │     │  Secondary  │                   │
│   └─────────────┘     └─────────────┘                   │
│         │                   │                           │
│         └───────┬───────────┘                           │
│                 │                                        │
│         ┌───────▼───────┐                               │
│         │   Workstation │                               │
│         │   (Arch/RHEL) │                               │
│         └───────────────┘                               │
│                                                          │
│   server1: 192.168.122.10                               │
│   server2: 192.168.122.20                               │
│                                                          │
└─────────────────────────────────────────────────────────┘

Resources

Primary

Practice Exams

  • Book end-of-chapter labs

  • RHLS (Red Hat Learning Subscription) if available

Study Schedule Template

Week Chapters Focus

1

1-4

Installation, Tools, Files

2

5-8

Users, Permissions, Network, Software

3

9-12

Processes, Tasks, systemd, Logging

4

13-16

Storage, File Systems, Boot

5

17-21

SELinux, SSH, Firewall, Containers

6

22 + Review

Practice Exams