RHCSA study materials
RHCSA study resources

RHCSA common mistakes

RHCSA · Understand the traps and how to avoid them.

Mistake 1

Starting and verifying a service with systemctl start and systemctl status, but never running systemctl enable, then assuming it will return after reboot.

The candidate confuses starting a unit now with enabling it at boot; status shows active in the current boot and masks the missing boot-time enablement.

What to do instead

Use systemctl enable --now , then confirm with systemctl is-enabled and systemctl is-active .

Mistake 2

Fixing a web content SELinux label with chcon -t httpd_sys_content_t on /web and stopping there.

chcon changes only the current label; a later restorecon or filesystem relabel resets it, so the service breaks again.

What to do instead

Add a persistent rule with semanage fcontext -a -t httpd_sys_content_t '/web(/.*)?', then run restorecon -Rv /web and verify with ls -Z.

Mistake 3

Adding a filesystem to /etc/fstab using a device name or a hand-copied UUID, then rebooting without testing the entry.

Device names can change and UUIDs are easy to mistype; an invalid fstab entry can cause emergency-mode boot failures.

What to do instead

Get the UUID with blkid, add UUID= to /etc/fstab, run systemctl daemon-reload and mount -a, and verify with findmnt.

Mistake 4

Running lvextend to enlarge a logical volume but not growing the filesystem inside it, then reporting the new size from lvs while df still shows the old size.

LVM extension and filesystem extension are separate operations; the candidate checks the block device instead of the mounted filesystem.

What to do instead

After lvextend, run xfs_growfs for XFS or resize2fs for ext4, then verify with df -h and findmnt.

Mistake 5

Adding a user to a supplementary group with usermod -G wheel user instead of usermod -aG wheel user.

-G replaces the user's entire supplementary group list, silently removing previous group memberships.

What to do instead

Use usermod -aG , then verify with id and groups .

Mistake 6

Modifying a NetworkManager connection with nmcli con mod but not reactivating it, then testing the old IP address and concluding networking is configured.

The profile change is stored but not applied to the running device until the connection is brought up again.

What to do instead

Run nmcli con mod ... followed by nmcli con up , then verify with ip addr show, nmcli dev status, and a ping or route check.

Mistake 7

Installing a downloaded RPM with rpm -ivh package.rpm and then failing because dependencies are unresolved.

rpm does not resolve repository dependencies, while dnf does; the candidate uses the lower-level tool for a normal install.

What to do instead

Install local packages with dnf install ./package.rpm so dependencies are resolved, or configure the correct repository first and use dnf install .

Mistake 8

Writing a script that uses relative paths such as ./data.txt or cat output.log, then running it from a different directory or from cron where it cannot find its files.

The script inherits the caller's current working directory, not the directory containing the script or its data.

What to do instead

Use absolute paths, or compute the script directory and cd into it, and test the script from / and from another directory before submitting.

Mistake 9

Running grep pattern /etc or grep pattern /var/log and getting 'Is a directory' or no useful results because recursion was not requested.

grep does not descend into directories unless -r or -R is supplied; the candidate assumes it searches everything automatically.

What to do instead

Use grep -r pattern /etc or combine find /etc -type f -exec grep -H pattern {} +, and quote patterns containing shell metacharacters.

Mistake 10

Opening a firewall port with firewall-cmd --add-port=8080/tcp and reloading, but omitting --permanent, then losing the rule after the next reload or reboot.

Without --permanent the change exists only in the runtime configuration and is discarded when the firewall reloads.

What to do instead

Use firewall-cmd --permanent --add-port=8080/tcp followed by firewall-cmd --reload, then verify with firewall-cmd --list-all.