All certifications / RHCSA / Lessons
RHCSA EX200 (RHEL 10) lessons
Study RHCSA for free
A week-by-week plan with every lesson, quizzes, checkpoint tests, a practice exam and hands-on labs.
Open the RHCSA study planA week-by-week plan with every lesson, quizzes, checkpoint tests, a practice exam and hands-on labs.
Domain 1: Understand and use essential tools
- Using a shell prompt and running commands with correct syntax
- Input and output redirection: >, >>, 2>, 2>&1, <, pipes and tee
- Grep and regular expressions: ^, $, ., *, [ ], -i, -v, -r, -E
- Accessing remote systems with ssh; logging in and switching users (su -, sudo -i) in multiuser targets
- Archiving and compressing with tar, gzip, bzip2 and xz (-c, -x, -t, -z, -j, -J, -f)
- Creating and editing text files with vim or nano
- Creating, deleting, copying and moving files and directories (mkdir -p, cp -a, mv, rm -r)
- Hard links vs symbolic links (ln, ln -s) and their limits
- Listing, setting and changing standard ugo/rwx permissions in numeric and symbolic form
- Finding documentation with man, man -k, info and /usr/share/doc
Domain 2: Manage software
- Configuring access to RPM repositories: .repo files in /etc/yum.repos.d/ (baseurl, enabled, gpgcheck, gpgkey)
- Dnf config-manager --add-repo, dnf repolist and dnf clean all
- Installing, updating and removing RPM packages with dnf (install, remove, update, reinstall, history undo)
- Finding packages and files: dnf search, dnf provides, dnf info
- Querying installed packages with rpm -q, -qa, -qi, -ql, -qf, -qc
- Package groups: dnf group list and dnf group install
- Configuring access to Flatpak repositories: flatpak remote-add, flatpak remotes
- Installing, listing, updating and removing Flatpak applications (flatpak install, list, update, uninstall, run)
Domain 3: Create simple shell scripts
- Shebang lines, making scripts executable and running them from PATH
- Conditionally running code with if, elif, else and test / [ ] (-f, -d, -z, -eq, -gt, string compares)
- Exit status ($?), && and ||, and exit codes in scripts
- Looping with for (over lists, globs, $(seq)) and while read
- Processing script inputs: $1, $2, $#, $@ and $0
- Processing the output of shell commands with $( ) command substitution
- Reading input and using variables and quoting correctly
- Case statements for simple argument handling
Domain 4: Operate running systems
- Booting, rebooting and shutting down normally (systemctl reboot, poweroff)
- Booting into different targets manually from the GRUB menu (systemd.unit=rescue.target, emergency.target)
- Interrupting the boot process to gain access (rd.break, chroot /sysroot, passwd, touch /.autorelabel)
- Identifying CPU- and memory-intensive processes with top, ps aux --sort and killing them (kill, pkill, signals 15 and 9)
- Adjusting process scheduling with nice and renice (range -20 to 19)
- Managing tuning profiles with tuned-adm (active, recommend, profile)
- Locating and reading system logs: /var/log/messages, /var/log/secure, journalctl -u, -p, -b, --since
- Preserving the systemd journal across reboots (Storage=persistent, /var/log/journal)
- Starting, stopping and checking network services (systemctl status, ss -tlnp)
- Securely transferring files between systems with scp, sftp and rsync over ssh
Domain 5: Configure local storage
- Listing disks and partitions with lsblk, blkid and fdisk -l
- Creating and deleting GPT partitions with parted, gdisk or fdisk; setting the partition type (lvm, swap)
- Creating and removing physical volumes (pvcreate, pvremove, pvs)
- Creating volume groups and assigning physical volumes (vgcreate -s, vgextend, vgs)
- Creating and deleting logical volumes by size (-L) or extent count (-l) (lvcreate, lvremove, lvs)
- Mounting file systems at boot by UUID or label in /etc/fstab
- Adding new partitions, logical volumes and swap without destroying existing data
- Creating and enabling swap (mkswap, swapon, swapon --show) and making it persistent
Domain 6: Create and configure file systems
- Creating vfat, ext4 and xfs file systems (mkfs.vfat, mkfs.ext4, mkfs.xfs)
- Mounting, unmounting and using file systems; mount -a and findmnt --verify
- /etc/fstab fields: device, mount point, type, options, dump, fsck order
- Mounting and unmounting NFS network file systems (mount -t nfs, _netdev)
- Configuring autofs: /etc/auto.master.d/*.autofs, map files and wildcard (* and &) entries
- Extending existing logical volumes and their file systems (lvextend -r, xfs_growfs, resize2fs)
- XFS can grow but not shrink; ext4 can do both when unmounted
- Diagnosing and correcting file permission problems (ls -l, namei -l, chmod, chown)
Domain 7: Deploy, configure and maintain systems
- Scheduling tasks with at, cron (crontab -e, /etc/cron.d) and systemd timer units (OnCalendar=, OnBootSec=)
- Starting and stopping services and configuring them to start at boot (systemctl enable --now, disable, mask)
- Setting the default boot target (systemctl get-default, set-default)
- Configuring time service clients with chronyd (/etc/chrony.conf, chronyc sources) and timedatectl
- Installing and updating packages from the Red Hat CDN, a remote repository or the local file system
- Registering systems with subscription-manager (Developer subscription)
- Modifying the boot loader: grubby, /etc/default/grub and grub2-mkconfig
- Choosing the default kernel and adding or removing kernel arguments
Domain 8: Manage basic networking
- Configuring static and DHCP IPv4 and IPv6 addresses with nmcli (ipv4.method manual/auto, ipv4.addresses, ipv4.gateway)
- NetworkManager keyfiles in /etc/NetworkManager/system-connections/ (RHEL 10 no longer uses ifcfg files)
- Bringing connections up and down and making them autoconnect (nmcli con up, connection.autoconnect)
- Configuring hostname resolution: hostnamectl, /etc/hosts, ipv4.dns and /etc/resolv.conf
- Checking addresses, routes and name resolution: ip addr, ip route, ping, getent hosts
- Configuring network services to start automatically at boot
- Restricting network access with firewalld and firewall-cmd (services, ports, zones, --permanent, --reload)
- Using nmtui as a text-based alternative to nmcli
Domain 9: Manage users and groups
- Creating, deleting and modifying local user accounts (useradd -u -G -s -c, usermod, userdel -r)
- Non-interactive shells for service accounts (/sbin/nologin)
- Changing passwords (passwd, passwd --stdin) and adjusting password aging (chage -M -m -W -E -d 0)
- Default aging in /etc/login.defs and account defaults in /etc/default/useradd and /etc/skel
- Creating, deleting and modifying local groups and memberships (groupadd -g, usermod -aG, gpasswd)
- Account databases: /etc/passwd, /etc/shadow, /etc/group; id and getent
- Configuring superuser access: the wheel group, /etc/sudoers.d/ drop-ins and visudo
- Locking and unlocking accounts (usermod -L, passwd -l, chage -E 0)
Domain 10: Manage security
- Configuring firewall settings with firewall-cmd: zones, services, ports, sources, runtime vs permanent
- Managing default file permissions with umask (shell and /etc/login.defs, ~/.bashrc)
- Configuring key-based SSH authentication (ssh-keygen, ssh-copy-id, ~/.ssh permissions, sshd_config)
- Setting SELinux enforcing and permissive modes (getenforce, setenforce, /etc/selinux/config)
- Listing and identifying SELinux file and process contexts (ls -Z, ps -eZ, id -Z)
- Restoring default file contexts (restorecon -Rv) and adding rules with semanage fcontext
- Managing SELinux port labels (semanage port -a -t http_port_t -p tcp)
- Using SELinux booleans (getsebool -a, setsebool -P, semanage boolean -l)
- Diagnosing routine SELinux denials: /var/log/audit/audit.log, ausearch -m AVC, sealert