RHCSA Cheat Sheet for RHEL 10

Tested on RHEL 10.2 (Coughlan)
Package Multiple RHEL 10 base utilities (dnf, systemd, lvm2, firewalld, shadow-utils)
Applies to RHEL 10, Rocky Linux 10, AlmaLinux 10, CentOS Stream 10, Fedora (objective overlap)
Privilege Varies by task — most patterns need sudo or root
Man page EX200 objectives (Red Hat)
Scope Objective-organized RHCSA revision for RHEL 10—command patterns, key files, and verification steps with links to full lessons. Not a site-wide command index or timed exam simulation.

Use this page after you have worked through the RHCSA tutorial lessons. Each row gives a task pattern, a verification command, and where to read the full procedure. Commands assume you understand the flags—lab practice matters more than memorizing syntax alone.

  • RHEL 10 focus aligned to the live EX200 objective list
  • Configurations must survive reboot (--now, --permanent, /etc/fstab, enabled units)
  • For general Linux syntax outside RHCSA scope, use the Linux commands cheat sheet

Essential Command-Line Tools

Task Command pattern Verify Lesson
Print working directory pwd Path matches expected location Linux command line
Change directory cd /path or cd ~user pwd Linux command line
List directory ls -la path Entries and permissions visible Linux command line
Absolute vs relative paths /etc/passwd vs ../file readlink -f path Filesystem hierarchy

File operations

Task Command pattern Verify Lesson
Create empty file touch file ls -l file File management
Create directory mkdir -p dir test -d dir File management
Copy or move cp -a src dst / mv src dst ls -l dst File management
Remove safely rm file / rm -r dir ls parent directory File management
Edit text vim file or nano file cat file or :wq then diff Edit text files

Redirection and pipes

Task Command pattern Verify Lesson
Redirect stdout cmd > file cat file Redirection and pipes
Append output cmd >> file tail file Redirection and pipes
Pipe to filter cmd | grep pattern Expected lines only Redirection and pipes
Save stderr cmd 2> err.log cat err.log Redirection and pipes

Search and archives

Task Command pattern Verify Lesson
Search file content grep -E 'pattern' file Matching lines grep command
Recursive search grep -r pattern /path File:line output grep command
Create tar archive tar -czf archive.tgz dir/ tar -tzf archive.tgz tar command
Extract archive tar -xzf archive.tgz -C /dest ls /dest tar command
Compress with gzip gzip file gzip -t file.gz or ls -l file.gz gzip command
Uncompress gzip gzip -d file.gz Original file restored gzip command
Compress with bzip2 bzip2 file bzip2 -t file.bz2 or ls -l file.bz2 bzip2 command
Uncompress bzip2 bzip2 -d file.bz2 Original file restored bzip2 command
Task Command pattern Verify Lesson
Symbolic link ln -s target linkname ls -l linkname Symbolic links
Hard link ln target linkname ls -li target linkname (same inode) Symbolic links
Change mode chmod 640 file ls -l file File permissions
Change owner chown user:group file ls -l file File permissions
Diagnose permissions ls -l path; namei -l path Access or execute succeeds after chmod/chown File permissions
Default permissions umask / umask 022 touch t; ls -l t umask

Documentation and remote access

Task Command pattern Verify Lesson
Manual page man command Correct section opens Linux command line
Keyword search man -k keyword Relevant pages listed Linux command line
Info documentation info command Info page opens Linux command line
Package documentation ls /usr/share/doc/pkg* Documentation listed Linux command line
SSH login ssh user@host Shell on remote host SSH command
Copy over SSH scp file user@host:/path File on remote scp command

DNF, RPM and Flatpak

Task Command pattern Verify Lesson
Search package dnf search keyword NEVRA in output dnf command
Install package sudo dnf install pkg rpm -q pkg dnf command
Install local RPM sudo dnf install ./package.rpm rpm -q package dnf command
Upgrade all packages sudo dnf upgrade dnf check-update (no package updates listed) dnf command
Remove package sudo dnf remove pkg rpm -q pkg fails dnf command
List repos dnf repolist Enabled repos shown dnf command
Configure repository sudo dnf config-manager --add-repo URL or /etc/yum.repos.d/name.repo; sudo dnf makecache dnf repolist dnf command
Query installed RPM rpm -qi pkg Name, version, install time rpm command
Which package owns file rpm -qf /path/file NEVRA line rpm command
Verify package files rpm -V pkg No unexpected changes rpm command
Flatpak remote flatpak remote-add --if-not-exists name url flatpak remotes Flatpak
Install Flatpak app flatpak install remote app flatpak list Flatpak
Remove Flatpak app flatpak uninstall APP_ID flatpak list Flatpak

Bash Script Patterns

Short patterns only—full walkthroughs live in the scripting lesson.

Task Pattern Verify Lesson
Shebang #!/bin/bash as line 1 file script.sh shows bash Bash shell scripting
Positional args $1, $#, $@ echo "$@" in test run Bash shell scripting
Test command status if command; then ...; fi Branch taken as expected Bash shell scripting
File test if [ -f file ]; then ...; fi Branch behaves as expected Bash shell scripting
Loop over arguments for arg in "$@"; do ...; done Each argument processed Bash shell scripting
Read file lines while IFS= read -r line; do ...; done < file Each line processed Bash shell scripting
Command substitution var=$(command) echo "$var" Bash shell scripting
Exit status command; echo $? 0 on success Bash shell scripting

Running Systems and systemd

Task Command pattern Verify Lesson
Reboot sudo systemctl reboot Host returns after boot Boot and shutdown
Power off sudo systemctl poweroff System halts Boot and shutdown
Change target (runtime) sudo systemctl isolate multi-user.target systemctl is-active multi-user.target systemd targets
Set default target sudo systemctl set-default multi-user.target systemctl get-default systemd targets
List processes ps aux or ps -ef PID and CMD columns Process management
CPU-intensive processes ps aux --sort=-%cpu | head High %CPU PIDs at top Process management
Memory-intensive processes ps aux --sort=-%mem | head High %MEM PIDs at top Process management
Signal process kill -TERM pid / kill -9 pid Process gone from ps Process management
Nice value nice -n 10 cmd / renice -n 5 -p pid ps -o pid,ni,cmd -p pid nice and renice
Tuned profile sudo tuned-adm profile throughput-performance tuned-adm active Tuned profiles
Journal logs journalctl -u unit -e Recent unit lines journalctl
Persistent journal Storage=persistent in /etc/systemd/journald.conf or drop-in; sudo systemctl restart systemd-journald ls -ld /var/log/journal; after reboot journalctl --list-boots Persistent journald
Manage service runtime sudo systemctl start|stop|restart name systemctl status name systemctl
Start service now + boot sudo systemctl enable --now name systemctl is-active name; systemctl is-enabled name systemctl
Root password recovery Bootloader edit → rd.break workflow Login as root after reboot Reset root password

Local Storage and Filesystems

Task Command pattern Verify Lesson
Block layout lsblk -f NAME, FSTYPE, MOUNTPOINT GPT partitions
GPT partition sudo parted /dev/vdb mklabel gpt then mkpart parted /dev/vdb print GPT partitions
Delete GPT partition sudo parted /dev/vdb rm N parted /dev/vdb print GPT partitions
Create PV sudo pvcreate /dev/vdb1 pvs LVM
Add PV to existing VG sudo vgextend vg0 /dev/vdb2 pvs; vgs LVM
Remove empty PV from VG sudo vgreduce vg0 /dev/vdb2; sudo pvremove /dev/vdb2 pvs LVM
Create VG and LV sudo vgcreate vg0 /dev/vdb1; sudo lvcreate -L size -n lv0 vg0 vgs; lvs LVM
Delete LV sudo lvremove /dev/vg0/lv0 lvs LVM
XFS filesystem sudo mkfs.xfs /dev/vg0/lv0 blkid /dev/vg0/lv0 Create and mount filesystems
ext4 filesystem sudo mkfs.ext4 /dev/vg0/lv0 blkid /dev/vg0/lv0 Create and mount filesystems
VFAT filesystem sudo mkfs.vfat /dev/vdb1 blkid /dev/vdb1 Create filesystem on partition
Mount once sudo mount /dev/vg0/lv0 /mnt findmnt /mnt Create and mount filesystems
Unmount sudo umount /mnt findmnt /mnt empty mount and umount command
Persistent mount Add UUID=... or LABEL=... entry to /etc/fstab; sudo systemctl daemon-reload sudo mount -a; findmnt fstab UUID and labels
Swap LV sudo mkswap /dev/vg0/swaplv; sudo swapon /dev/vg0/swaplv; add swap UUID to /etc/fstab swapon --show; /proc/swaps swap
NFS client mount sudo mount server:/export /mnt/nfs findmnt; df -h NFS client
autofs map Edit /etc/auto.master and map file systemctl is-active autofs; ls trigger configure autofs
Extend LV and FS lvextend -r -L +size /dev/vg0/lv0 lvs; df -h Extend LVM

If a PV still holds allocated extents, run pvmove before vgreduce.


Scheduling, Time and Bootloader

Task Command pattern Verify Lesson
User crontab crontab -emin hour dom mon dow cmd crontab -l crontab
System cron File in /etc/cron.d/ or /etc/cron.daily/ Run at scheduled time / ls crontab
One-shot at time echo 'cmd' | at 14:30 atq; job runs at command
systemd timer .timer + .service units; systemctl enable --now timer systemctl list-timers systemd timers
Chrony sync pool/server in /etc/chrony.conf; chronyc sources chronyc tracking Chrony
Boot target (runtime) sudo systemctl isolate graphical.target systemctl is-active graphical.target systemd targets
GRUB default kernel sudo grubby --set-default-index=N grubby --default-index GRUB2 on RHEL
GRUB kernel params sudo grubby --args="param" --update-kernel ALL grubby --info=ALL GRUB2 on RHEL

Networking

Task Command pattern Verify Lesson
Connection profile nmcli con mod name ipv4.method manual ipv4.addresses ... ipv4.gateway ... nmcli con show name nmcli
IPv6 on profile nmcli con mod name ipv6.addresses ... ipv6.method manual nmcli con show name Configure IPv6
Activate connection sudo nmcli con up name nmcli dev status nmcli
Static hostname sudo hostnamectl set-hostname host.example.com hostnamectl Hostname resolution
Hostname mapping /etc/hosts getent hosts name Hostname resolution
DNS servers nmcli con mod NAME ipv4.dns "IP1 IP2"; sudo nmcli con up NAME cat /etc/resolv.conf Hostname resolution
Listening ports ss -tulnp Expected LISTEN rows ss command
Routing table ip route Default via gateway nmcli
firewalld service sudo firewall-cmd --permanent --add-service=http; sudo firewall-cmd --reload firewall-cmd --permanent --list-services; firewall-cmd --list-services firewalld
firewalld port sudo firewall-cmd --permanent --add-port=8080/tcp; sudo firewall-cmd --reload firewall-cmd --permanent --list-ports; firewall-cmd --list-ports firewalld
firewalld zone sudo firewall-cmd --permanent --zone=public --change-interface=eth0; sudo firewall-cmd --reload firewall-cmd --get-active-zones firewalld
Remote check ssh peer 'ss -tlnp' or curl http://peer Service reachable from peer SSH command

Use --permanent for exam-style firewalld changes, firewall-cmd --reload, then verify both permanent and runtime lists (--list-services / --list-ports).


Users, Groups and Privileged Access

Task Command pattern Verify Lesson
Create user + home sudo useradd -m -s /bin/bash name id name; getent passwd name User and group management
Set password sudo passwd name sudo passwd -S name User and group management
Modify user sudo usermod -aG group name id name User and group management
Delete user + home sudo userdel -r name getent passwd name fails User and group management
Group create sudo groupadd group getent group group User and group management
Modify group sudo groupmod -n new old getent group new User and group management
Delete group sudo groupdel group getent group group fails User and group management
Password aging sudo chage -M 90 -W 7 name chage -l name chage command
sudo rule visudouser ALL=(ALL) ALL sudo -l -U user sudo command
Switch user su - name id; new home su command
Default file mode umask 027 in /etc/profile or ~/.bashrc New file mode from touch umask

SELinux and SSH Keys

Task Command pattern Verify Lesson
SELinux mode (runtime) sudo setenforce 0|1 getenforce SELinux modes
SELinux mode (persistent) Set SELINUX=permissive|enforcing in /etc/selinux/config grep '^SELINUX=' /etc/selinux/config; getenforce after reboot SELinux modes
File context ls -Z path user:role:type:level SELinux modes
Process context ps -efZ or ps -eZ Process type/context visible SELinux modes
Restore context sudo restorecon -Rv path ls -Z matches system_u:object_r:... SELinux modes
Persistent context sudo semanage fcontext -a -t type 'path(/.*)?' then restorecon matchpathcon path SELinux modes
Port label sudo semanage port -a -t http_port_t -p tcp 8080 semanage port -l | grep 8080 SELinux ports and booleans
Boolean sudo setsebool -P httpd_can_network_connect on getsebool httpd_can_network_connect SELinux ports and booleans
Generate key ssh-keygen -t ed25519 -f ~/.ssh/keyname ssh-keygen -l -f ~/.ssh/keyname SSH key authentication
Install public key ssh-copy-id -i ~/.ssh/keyname.pub user@host ssh -i ~/.ssh/keyname user@host SSH key authentication

Verification and Persistence Checklist

Before you move on—or before you leave an exam task—run through this list:

Check Question
Command exit status Did the last command succeed (echo $? or obvious output)?
Service active Does systemctl is-active name show active when a daemon is required?
Enabled at boot Does systemctl is-enabled name show enabled when persistence is required?
Config on disk Is the change in the correct file (/etc/fstab, nmcli profile, firewalld --permanent, visudo, cron file)?
Survives reboot After reboot, do findmnt, systemctl, getent, or remote tests still pass?
Remote view Can a second host reach the service (ssh, curl, nfs, ping as appropriate)?
Permissions Do ls -l modes and owners match the task (chmod, chown, umask)?
SELinux Do ls -Z labels and booleans allow the service (restorecon, setsebool -P)?

Common Exam-Time Command Patterns

Generic habits that apply across objectives—no speculation about exam mechanics:

Situation Pattern
Unfamiliar flag man command or command --help
Before editing config sudo cp file file.bak
Before restart sudo command -t or config test when available (sshd -t, apachectl configtest)
After failure journalctl -xe, journalctl -u unit, or tail relevant log
Repeat prior command history or !n
Wrong disk or user lsblk, id, getent passwd, nmcli con show before destructive commands

RHCSA cheat sheet — interview corner

How is this RHCSA cheat sheet different from the Linux commands cheat sheet?
The Linux commands cheat sheet is a broad command index across administration topics. This page is organized by EX200-style objective areas on RHEL 10—each row ties a task to verification and a full lesson in the RHCSA course.
Should I memorize every command on this page?
No. Use it for revision after labs. EX200 rewards repeatable workflows you have practiced—storage, users, networking, SELinux—not verbatim memorization of every flag.
What should I do after reviewing this cheat sheet?
Re-run lesson exercises on your lab VMs, especially storage, users, networking, and SELinux. Return to individual lessons when a row exposes a gap, and confirm the live EX200 objectives before you schedule the exam.
Does this page replace the official Red Hat objectives?
No. Confirm the live EX200 objectives on Red Hat's site before you schedule the exam.

References

Deepak Prasad

R&D Engineer

Founder of GoLinuxCloud with more than 15 years of expertise in Linux, Python, Go, Laravel, DevOps, Kubernetes, Git, Shell scripting, OpenShift, AWS, Networking, and Security. With extensive experience, he excels across development, DevOps, networking, and security, delivering robust and efficient solutions for diverse projects.

  • Go (programming language)
  • Python (programming language)
  • DevOps
  • Computer Security
  • Cloud Computing
  • Kubernetes
  • Linux
  • Ansible (software)