| |

LFCS 169 ๐Ÿง LFCS โ€” Final Review and Exam Day Tips

โฑ๏ธ Estimated read: 10 min | |

The previous chapters covered the technical content, the practice scenarios, and the 10-week study plan. This chapter is the final review and the exam day guidance. The LFCS is a performance-based exam delivered through a remote proctoring environment or a testing center, with the 2-hour time limit, the 15โ€“20 hands-on tasks, and the 66% passing score . The critical trap is the assumption that the technical knowledge is sufficient. The exam also tests the time management, the interpretation of the task requirements, the recovery from the broken configuration, and the verification of the state. The candidates who know the commands but rush without the verification lose the points to the small errors: the wrong path, the missing --permanent, the forgotten fstab, or the trailing slash.

Key point: The exam day is the execution of the preparation. The task is the instruction, the command is the tool, the verification is the proof. The candidate must read the task carefully, plan the sequence, execute the commands, verify the state, and move on. The time budget is approximately 6 minutes per task. The skip and the return is the strategy for the stuck task. The man pages are the allowed reference, but the reliance on them for the basic commands is the time sink.


Why the final review and the exam day require a specific mental model

The interpretation problem. The task is written in the precise language. The “create the user with the home directory and the shell” is the useradd -m -s. The “make it persistent” is the /etc/fstab or the nmcli. The “allow only the local subnet” is the allow 192.168.0.0/16; deny all in the correct order. The candidate who skims the task and executes the partial command loses the points for the omitted requirement .

The verification problem. The exam grader checks the system state, not the command output. The mount /dev/sdb1 /mnt/data may succeed, but the reboot does not preserve it without the /etc/fstab. The firewall-cmd --add-service=http may succeed, but the --reload loses it without the --permanent. The verification is the findmnt, the firewall-cmd --permanent --list-all, the systemctl is-enabled, and the cat /etc/fstab.

The time problem. The 2 hours for the 15โ€“20 tasks is the 6โ€“8 minutes per task . The complex tasks (the LVM, the RAID, the SELinux troubleshooting) take longer. The simple tasks (the user, the hostname, the cron job) take 2โ€“3 minutes. The time budget is the trade-off: the candidate must not spend the 20 minutes on one task and miss the four simple tasks.

The stuck problem. The task that is not working consumes the time. The strategy is the skip after the 5 minutes and the return after the rest. The perspective is the reset. The stuck task often becomes clear after the break.

The recovery problem. The changes can break the system. The iptables rule that drops the SSH. The fstab entry with the typo. The sshd_config with the wrong directive. The candidate must know the console access and the rescue mode. The exam environment provides the console; the recovery is the reboot with the rd.break or the single mode.

The trade-off. The speed versus the accuracy. The candidate who types fast without the verification loses the points to the small errors. The candidate who verifies everything runs out of the time. The balance is the verification of the critical requirements, the speed on the simple tasks.


a. The task interpretation and the sequence

The task is the instruction. The candidate must read the full task, identify the requirements, and plan the sequence before the typing.

# Task: Create the user "devops" with the home directory,
# the bash shell, the supplementary group "docker",
# the password "TempPass123", and the password expiry of 90 days.

# Plan:
# 1. groupadd docker (if not exists)
# 2. useradd -m -s /bin/bash -G docker devops
# 3. echo "devops:TempPass123" | chpasswd
# 4. chage -M 90 devops

# Execute:
sudo groupadd docker 2>/dev/null || true
sudo useradd -m -s /bin/bash -G docker devops
echo "devops:TempPass123" | sudo chpasswd
sudo chage -M 90 devops

# Verify:
id devops
sudo chage -l devops

The plan identifies the four requirements: the user, the home, the shell, the group, the password, the aging. The execute runs the four commands. The verify confirms the state with the id and the chage -l.

The sequence matters. The group must exist before the useradd -G. The password must be set after the user creation. The aging is the independent.


b. The verification and the persistence

The verification is the state check. The persistence is the reboot survival.

# Task: Mount /dev/sdb1 at /mnt/data and make it persistent.

# Execute:
sudo mkfs.ext4 /dev/sdb1
sudo mkdir -p /mnt/data
UUID=$(sudo blkid -s UUID -o value /dev/sdb1)
echo "UUID=$UUID /mnt/data ext4 defaults 0 2" | sudo tee -a /etc/fstab

# Verify:
sudo mount -a
findmnt /mnt/data
df -hT /mnt/data

The blkid extracts the UUID. The /etc/fstab entry uses the UUID. The mount -a tests the entry. The findmnt and the df verify. The persistence is the fstab, not the mount command.

The systemctl enable is the persistence for the service. The firewall-cmd --permanent is the persistence for the firewall. The sysctl drop-in is the persistence for the kernel. The mdadm.conf is the persistence for the RAID. The candidate must check the persistence for every task that says “make it persistent” or “survive the reboot.”


c. The exam day strategy and the recovery

The exam day strategy: the read the task, the plan, the execute, the verify, the move. The time budget: the simple tasks first, the complex second, the stuck last.

# The exam day checklist:
# 1. Read the task twice (the requirements)
# 2. Plan the commands (the sequence)
# 3. Execute the commands
# 4. Verify the state (the id, the findmnt, the ss, the systemctl)
# 5. Check the persistence (the fstab, the enable, the --permanent)
# 6. Move to the next task

The recovery if the system breaks.

# The recovery mode (the GRUB):
# 1. Reboot the system
# 2. Edit the GRUB entry (press "e")
# 3. Add "rd.break" to the linux line (RHEL) or "init=/bin/bash" (Ubuntu)
# 4. Boot (Ctrl+X)
# 5. Remount the root (mount -o remount,rw /sysroot)
# 6. Chroot (chroot /sysroot)
# 7. Fix the config
# 8. Exit and reboot

The rd.break breaks the boot before the root mount. The mount -o remount,rw /sysroot makes the root writable. The chroot /sysroot enters the root. The fix is the edit. The touch /.autorelabel if the SELinux is used.

The init=/bin/bash is the Ubuntu alternative. The root is the rw from the start. The passwd reset and the config fix.


Complete Example Session

# ============================================
# PART 1: READ THE TASK
# ============================================

# Task: Create "devops" with home, bash shell,
# docker group, password TempPass123, aging 90 days.
# ============================================
# PART 2: PLAN THE SEQUENCE
# ============================================

# 1. groupadd docker
# 2. useradd -m -s /bin/bash -G docker devops
# 3. chpasswd
# 4. chage -M 90
# ============================================
# PART 3: EXECUTE
# ============================================

sudo groupadd docker 2>/dev/null || true
sudo useradd -m -s /bin/bash -G docker devops
echo "devops:TempPass123" | sudo chpasswd
sudo chage -M 90 devops
# ============================================
# PART 4: VERIFY
# ============================================

id devops
sudo chage -l devops
# ============================================
# PART 5: PERSISTENCE TASK
# ============================================

# Task: Mount /dev/sdb1 at /mnt/data, persistent.
sudo mkfs.ext4 /dev/sdb1
sudo mkdir -p /mnt/data
UUID=$(sudo blkid -s UUID -o value /dev/sdb1)
echo "UUID=$UUID /mnt/data ext4 defaults 0 2" | sudo tee -a /etc/fstab
sudo mount -a
# ============================================
# PART 6: VERIFY THE MOUNT
# ============================================

findmnt /mnt/data
df -hT /mnt/data
# ============================================
# PART 7: SERVICE TASK
# ============================================

# Task: Enable nginx, allow http in the firewall, persistent.
sudo systemctl enable --now nginx
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --reload
# ============================================
# PART 8: VERIFY THE SERVICE
# ============================================

systemctl is-enabled nginx
systemctl is-active nginx
firewall-cmd --list-all
curl http://localhost
# ============================================
# PART 9: RECOVERY MODE
# ============================================

# If the system breaks:
# GRUB โ†’ "e" โ†’ rd.break โ†’ Ctrl+X
# mount -o remount,rw /sysroot
# chroot /sysroot
# fix the config
# exit; reboot

The nine parts trace the exam day: the read, the plan, the execute, the verify, the persistence, the verify the mount, the service, the verify the service, and the recovery.


Quick Reference

Exam Facts

ItemValue
FormatPerformance-based
Tasks15โ€“20
Duration2 hours
Passing66%
RetakeOne free within 12 months
Time per task6โ€“8 minutes

Task Sequence

StepAction
1Read the task twice
2Plan the commands
3Execute
4Verify the state
5Check the persistence
6Move on

Persistence Drills

TaskPersistence
Mount/etc/fstab
Servicesystemctl enable
Firewallfirewall-cmd --permanent
Kernel/etc/sysctl.d/
RAID/etc/mdadm.conf

Recovery

SystemCommand
RHELrd.break
Ubuntuinit=/bin/bash
Remountmount -o remount,rw /sysroot
Chrootchroot /sysroot

Best Practices

โœ… Do This:

id devops && sudo chage -l devops
<!-- Verify the user and the aging -->               # โœ…
sudo mount -a && findmnt /mnt/data
<!-- Verify the persistence -->                      # โœ…
systemctl is-enabled nginx
<!-- Verify the boot state -->                       # โœ…

โŒ Don’t Do This:

# Execute without the reading the task
<!-- Missing the requirement -->                     # โŒ
# Use the runtime commands only
<!-- Lost on reboot -->                              # โŒ
# Spend the 20 minutes on the stuck task
<!-- Miss the other tasks -->                        # โŒ

Common Pitfalls

PitfallWhy It HappensFix
Task incompleteSkimmed the requirementsRead twice, verify
Lost on rebootNo persistenceCheck the fstab, the enable, the --permanent
Time outStuck on the one taskSkip, return later
System brokenWrong configRecovery mode
Verification missingAssumed the command workedUse the id, the findmnt, the ss

Real-World Examples

1. Read the Task

Task: Create the user with the home, the shell, the group.

2. Plan

1. groupadd
2. useradd -m -s -G
3. chpasswd
4. chage

3. Execute

useradd -m -s /bin/bash -G docker devops

4. Verify User

id devops

5. Verify Aging

chage -l devops

6. Mount

mkfs.ext4 /dev/sdb1 && mount /dev/sdb1 /mnt/data

7. Verify Mount

findmnt /mnt/data

8. Persist Mount

echo "UUID=... /mnt/data ext4 defaults 0 2" >> /etc/fstab

9. Service

systemctl enable --now nginx

10. Recovery

GRUB โ†’ rd.break โ†’ chroot โ†’ fix

Visual

Exam Day Flow

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚  Read the task twice                         โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                   โ”‚
                   โ–ผ
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚  Plan the sequence                           โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                   โ”‚
                   โ–ผ
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚  Execute the commands                        โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                   โ”‚
                   โ–ผ
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚  Verify the state                            โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                   โ”‚
                   โ–ผ
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚  Check the persistence                       โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                   โ”‚
                   โ–ผ
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚  Move to the next task                       โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

Time Budget

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚  15-20 tasks in 120 minutes                  โ”‚
โ”‚  โ†’ 6-8 minutes per task                      โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚  Simple tasks (user, hostname): 2-3 min      โ”‚
โ”‚  Medium tasks (nginx, firewall): 5-7 min     โ”‚
โ”‚  Complex tasks (LVM, RAID, SELinux): 10-15 minโ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

Summary

ItemValue
Exam formatPerformance-based
Duration2 hours
Tasks15โ€“20
Passing66%
Time per task6โ€“8 minutes
Persistence/etc/fstab, enable, --permanent
Verificationid, findmnt, ss, systemctl
Recoveryrd.break, init=/bin/bash

Key takeaways:

  • The task is the instruction. The read twice, the plan the sequence, the execute, the verify. The candidate who skims the task misses the requirement and loses the points .
  • The verification is the proof. The exam grader checks the state. The id devops, the findmnt /mnt/data, the ss -tlnp, the systemctl is-enabled. The command output is not the state; the verification is.
  • The persistence is the trap. The task that says “persistent” or “survive the reboot” requires the /etc/fstab, the systemctl enable, the firewall-cmd --permanent, the sysctl drop-in. The runtime command is not enough.
  • The time is the budget. The 6โ€“8 minutes per task. The simple tasks first, the complex second, the stuck last. The skip and the return is the strategy.
  • The recovery is the console. The GRUB rd.break (RHEL) or the init=/bin/bash (Ubuntu). The mount -o remount,rw /sysroot. The chroot /sysroot. The fix and the reboot. The recovery is the last resort, not the first.

Remember: The exam day is the execution. The read, the plan, the execute, the verify, the persist, the move. The commands are the tools. The state is the proof. The time is the budget. The recovery is the safety. The exam tests the complete workflow, not the isolated command.

Was this helpful?


Stop using slow, ad-bloated tool sites! ๐Ÿคฎ

๐Ÿ”Ž Search “KandZ Tools” on Google to use many professional utilities for free.

KandZ.me is the ultimate minimalist hub for:
โœ… Finance (Mortgage, Interest, Inflation)
โœ… Tech (Base64, JSON, Dev Suite, IP)
โœ… Health (BMI, BMR, TDEE)
โœ… Productivity (Timer, Workspace, QR)

โšก๏ธ Fast & Private
๐Ÿ”’ No data leaves your device
๐Ÿ’Ž 100% Free

๐Ÿ”— Use it now: https://tools.kandz.me
๐Ÿ”– Bookmark itโ€”youโ€™ll need it later!