RHCSA Practice Lab Machines
Most of EX200 can be practised on one machine. Four objectives cannot: NFS, autofs, remote SSH access and file transfer all need somewhere to connect to. This is the three-machine lab every capture in this path was recorded on, including the spare disk the storage track destroys and rebuilds.
Start Here Guide 2 of 67 Beginner
- OSRHEL 10.0 (Coughlan)
- Kernel6.12.0-55.9.1.el10_0
- dnf4.20.0
- Flatpak1.16.0
- TimeAbout 10 min
- Reviewed23 August 2026
Written against the versions above. All three run RHEL 10.0. A rebuild of the same series - Rocky, Alma or CentOS Stream 10 - behaves identically for everything in this path except subscription-manager, which none of these guides use because the repositories here are served locally.
| Server Name | IP Address | OS | Roles | CPU | RAM | HDD |
|---|---|---|---|---|---|---|
| RHCSA-A01 | 192.168.0.31 | RHEL 10.0 (Coughlan) | Practice node (graded) - spare /dev/sda | 2 Core | 4 GB | 50 GB + 15 GB |
| RHCSA-UTIL01 | 192.168.0.32 | RHEL 10.0 (Coughlan) | Utility - repository server and NFS exports | 2 Core | 4 GB | 50 GB |
| RHCSA-B01 | 192.168.0.33 | RHEL 10.0 (Coughlan) | Practice node 2 - spare /dev/sdb | 2 Core | 4 GB | 50 GB + 15 GB |
Before you start
- Three RHEL 10 machines, or one plus two if you only want the single-node material.
- This guide changes nothing.
-
The practice node
RHCSA-A01 is where almost everything happens. It is a plain RHEL 10 install with a
sysadminaccount in thewheelgroup:uid=1000(sysadmin) gid=1000(sysadmin) groups=1000(sysadmin),10(wheel) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 sudo: works without a password promptTwo details in that line are worth noticing now.
wheelis what grants sudo on Red Hat systems, by a rule shipped in/etc/sudoers- that is the mechanism guide 20 takes apart. Andcontext=unconfined_u:...is the SELinux context of your own shell, which is the same kind of label that six of the security objectives are about.SELinux is enforcing and firewalld is running, and neither is ever turned off in this path. Turning them off is how a lab stops resembling the exam.
bash Example session id; sudo -n true && echo "sudo: works without a password prompt"uid=1000(sysadmin) gid=1000(sysadmin) groups=1000(sysadmin),10(wheel) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023sudo: works without a password promptgetenforce; sestatus | grep -E "SELinux status|Current mode|Loaded policy"EnforcingSELinux status: enabledLoaded policy name: targetedCurrent mode: enforcingExpected resultA wheel-group account and SELinux in enforcing mode.
Success conditionYou have a machine that behaves like the exam machine.
-
The utility server, and why packages come from it
RHCSA-UTIL01 is infrastructure. It serves the RHEL 10 repositories over plain HTTP:
[rhel10-baseos] name=RHEL 10 - BaseOS (util http) baseurl=http://192.168.0.32/rhel10/BaseOS enabled=1 gpgcheck=1 gpgkey=http://192.168.0.32/rhel10/RPM-GPG-KEY-redhat-releaseThat is not a shortcut around a subscription - it is the objective. "Configure access to RPM repositories" asks you to write exactly this kind of file, and having a real server to point at means guide 13 can break it and fix it rather than describe it.
Note
gpgcheck=1with agpgkeyURL. Leaving GPG checking on is the default and the correct answer; material that tells you to setgpgcheck=0is teaching you to disable the thing being tested.UTIL01 also exports NFS, which is what the file-system track mounts.
bash Example session sudo dnf repolistUpdating Subscription Management repositories.repo id repo namerhel10-appstream RHEL 10 - AppStream (util http)rhel10-baseos RHEL 10 - BaseOS (util http)cat /etc/yum.repos.d/rhel10.repo[rhel10-baseos]name=RHEL 10 - BaseOS (util http)baseurl=http://192.168.0.32/rhel10/BaseOSenabled=1gpgcheck=1gpgkey=http://192.168.0.32/rhel10/RPM-GPG-KEY-redhat-release [rhel10-appstream]name=RHEL 10 - AppStream (util http)baseurl=http://192.168.0.32/rhel10/AppStreamenabled=1gpgcheck=1gpgkey=http://192.168.0.32/rhel10/RPM-GPG-KEY-redhat-releaseExpected resultTwo enabled repositories, served over HTTP from 192.168.0.32.
Success conditionYou know where every package in this path comes from.
-
The second client, and the spare disks
RHCSA-B01 exists so that ssh, scp, rsync and key-based authentication have somewhere to go. All three machines resolve each other through
/etc/hostsand already accept each other's host keys forsysadmin:rhcsa-util01 reachable as sysadmin@rhcsa-util01 rhcsa-b01 reachable as sysadmin@rhcsa-b01That pre-existing trust is lab infrastructure standing in for a prepared exam environment, and it is stated rather than hidden. It does not do the work of guide 57, which generates a fresh key pair and pushes it with
ssh-copy-idover the existing channel - sossh-keygen,ssh-copy-idand the permission rules that silently breakauthorized_keysare all captured being run for real.The storage track needs a disk it is allowed to destroy, and both practice nodes have one. On A01 it is
/dev/sda, 15 GB, carrying no partition table and no filesystem signature at all:sda 15G disk sdb 50G disk |-sdb2 1G part xfs /boot `-sdb3 49G part LVM2_member |-rhel-root 45G lvm xfs /Read that layout carefully before the storage track, because the operating system is on
sdb, notsda. The scratch disk sorts first, which is exactly the sort of assumption that destroys a machine.bash Example session grep rhcsa /etc/hosts192.168.0.31 rhcsa-a01192.168.0.32 rhcsa-util01192.168.0.33 rhcsa-b01for h in rhcsa-util01 rhcsa-b01; do printf '%-14s ' "$h"; ssh -o BatchMode=yes -o ConnectTimeout=5 $h 'echo reachable as $(id -un)@$(hostname)' 2>&1 | tail -1; donerhcsa-util01 reachable as sysadmin@rhcsa-util01rhcsa-b01 reachable as sysadmin@rhcsa-b01lsblk -o NAME,SIZE,TYPE,FSTYPE,MOUNTPOINTNAME SIZE TYPE FSTYPE MOUNTPOINTsda 15G disksdb 50G disk├─sdb1 1M part├─sdb2 1G part xfs /boot└─sdb3 49G part LVM2_member ├─rhel-root 45G lvm xfs / └─rhel-swap 3.9G lvm swap [SWAP]sr0 1024M romsudo wipefs -n /dev/sda 2>&1 | head -3; echo "--- /dev/sda carries no signatures: it is the scratch disk"--- /dev/sda carries no signatures: it is the scratch diskExpected resultBoth other machines reachable, and an empty 15 GB /dev/sda.
Success conditionYou can follow every objective in the blueprint, including the four that need more than one machine.
Troubleshooting
Only one machine is available.
Why: Nothing is wrong - most of the path still works.
Fix:Everything except NFS, autofs, remote SSH and file transfer runs on one host. A second VM with 1 GB of RAM is enough for the rest.
No spare disk for the storage track.
Why: A single-disk VM.
Fix:Add a second virtual disk of any size from 2 GB up, or practise on a loopback device. Never practise LVM on the disk holding
/.sudoasks for a password and you do not have one.Why: The account is not in
wheel, or a NOPASSWD rule is absent.Fix:
usermod -aG wheel <user>as root, then log out and back in. Group membership is read at login.