Module 15 · Final Assessment
13 hands-on challenges — one per module. Reading about Linux is preparation. Doing this is the actual learning.
By the end of this module, you will:
- Demonstrate competence across all 12 core modules
- Complete a comprehensive practical assessment without reference materials
- Achieve a minimum score of 70% on the final module quiz
- Produce a self-evaluation of Linux migration readiness
- Map each exercise to the module it tests, and identify gaps to revisit
- Apply a self-scoring rubric to confirm completion before moving on
How to Approach This Assessment
Treat this like a driving test: you can't really fail it, but you'll learn the most from how you struggle. Suggested workflow:
- Set a timer per exercise — 5–10 minutes each. If you're stuck after 10, note which module the exercise comes from (table below) and move on. Revisit after.
- No reference material first time through — only your terminal and your memory. The point is to find your real gaps, not to feel good.
- If you fail an exercise, the table below tells you exactly which module to re-read. Reading the right 5 pages beats re-reading everything.
- Aim for 70%+ — that's "competent enough to be productive, not yet expert." Anything above that is a bonus.
Exercise-to-Module Map
Use this table as a self-diagnostic. If exercise n stumps you, re-read the linked module before moving on.
| Exercise | What it tests | Source module |
|---|---|---|
| 1. Install Ubuntu in VirtualBox | Install fundamentals, VM setup | M4 — Installation |
| 2. Explore the directory tree | FHS, navigation, paths | M3 — File System Structure |
| 3. Recreate Windows desktop structure | mkdir, cp, mv from CLI | M3 + M6 |
| 4. Install 4 essential apps | apt install, package selection | M8 — Package Management |
| 5. Create a user and manage permissions | adduser, usermod, sudo | M10 — Users & Permissions |
| 6. Every permission combination | chmod numeric + symbolic | M10 — Users & Permissions |
| 7. Monitor system for 5 minutes | htop, ps, free, df, journalctl | M11 — System Monitoring |
| 8. Explore the network from the terminal | ip addr, ping, ss | M12 — Basic Networking |
| 9. Count and search log files | grep, wc, journalctl | M6 + M11 |
| 10. Write your first Bash script | nano, chmod +x, basic syntax | M6 + M14 |
| 11. SSH into localhost | SSH server + client basics | M12 + M15 |
| 12. Launch a web server | apt install nginx, systemctl, ufw | M8 + M11 + M12 |
| 13. Build a complete LAMP stack | Multi-service install, config, troubleshoot | Combines M3–M12 |
| 14. Stretch (M13 / M14) | Editors and shell scripting | M13 + M14 |
Install Ubuntu in VirtualBox
Set up a safe sandbox to practice without risk to your Windows install. Once done, every exercise below runs inside it.
- Download VirtualBox from virtualbox.org
- Download Ubuntu 24.04 LTS ISO from ubuntu.com
- Create a VM: 4GB RAM, 25GB disk, 2 CPUs
- Mount the ISO, boot, and complete installation
- Install VirtualBox Guest Additions for better performance
Easy
Explore the Directory Tree
Navigate to 6 key system directories, list their contents, and identify what each contains. Build your mental map.
cd /etc && ls— see system config filescd /var/log && ls— see log filescd /usr/bin && ls | head -20— see executablescd ~ && ls -la— see your home directory including hidden filescd /tmp && ls— see temporary files- Write down what you found in each
Easy
Recreate Your Windows Desktop Structure
Using only the terminal, create a folder structure that mirrors your Windows Desktop. No GUI allowed.
mkdir -p ~/LinuxDesktop/{Projects,Documents,Downloads,Screenshots}- Create 3 text files:
touch ~/LinuxDesktop/notes.txt readme.txt todo.txt - List everything:
ls -la ~/LinuxDesktop/ - Move one file:
mv ~/LinuxDesktop/todo.txt ~/LinuxDesktop/Documents/ - Copy it back:
cp ~/LinuxDesktop/Documents/todo.txt ~/LinuxDesktop/
Easy
Install 4 Essential Applications
Practice apt by installing a useful set of tools. Notice how fast it is compared to downloading .exe files.
sudo apt update— always update firstsudo apt install htop git curl neofetch- Run
neofetch— enjoy your system info display - Run
htop— press F10 to quit sudo apt remove neofetch— remove itsudo apt autoremove— clean up orphaned packages
Easy
Create a User and Manage Permissions
Create a second user, grant sudo access, switch users, and set file permissions.
sudo useradd -m -s /bin/bash testusersudo passwd testuser— set a passwordsudo usermod -aG sudo testuser— give sudo accesssu - testuser— switch to that usertouch /tmp/secretfile.txtchmod 600 /tmp/secretfile.txt— make it privatels -la /tmp/secretfile.txt— verify permissionsexit— return to your main user
Medium
Understand Every Permission Combination
Create files, apply different permission sets, and test what each user can and cannot do.
echo '#!/bin/bash' > perm-test.sh- Try running:
./perm-test.sh— permission denied - Add execute:
chmod +x perm-test.sh - Run it:
./perm-test.sh— works now - Make read-only:
chmod 444 perm-test.sh - Try editing:
echo 'test' >> perm-test.sh— denied - Restore:
chmod 644 perm-test.sh
Medium
Monitor Your System for 5 Minutes
Use htop, df, and free to get a complete picture of your system's health.
htop— identify top 3 processes by CPU. Press F6 to sort by memory.- Press F9 on a process — see kill options. ESC to cancel.
- Press F10 to exit htop
df -h— note how full each filesystem isfree -h— check RAM and swap usageuptime— how long since last reboot?uname -a— what kernel version are you running?
Easy
Explore Your Network from the Terminal
Check your IP, test connectivity, and see what's listening on your system.
ip addr show— find your IP addressping -c 4 google.com— test internet (-c 4 = 4 packets)sudo apt install traceroute && traceroute google.comss -tulpn— see open portscurl -I https://google.com— see HTTP headerscat /etc/hosts— see your hosts file
Easy
Count and Search Log Files
Use find and grep to locate files and search inside them — the core of Linux troubleshooting.
find /var/log -name "*.log" 2>/dev/null— find all .log filesfind /var/log -name "*.log" 2>/dev/null | wc -l— count themsudo grep -r "error" /var/log/syslog | tail -20find ~ -name "*.txt" -mtime -7— modified in last 7 daysfind / -size +100M 2>/dev/null— files over 100MB
Medium
Write Your First Bash Script
A script that greets you, shows the date, and lists your home directory. Your first automation.
nano ~/greet.sh- Type:
#!/bin/bash, thenecho "Hello, $(whoami)!", thenecho "Today: $(date)", thenls -la ~ - Save: Ctrl+O, Enter, Ctrl+X
chmod +x ~/greet.sh~/greet.sh— run itsudo mv ~/greet.sh /usr/local/bin/greet— install it globally- Now just type
greetfrom anywhere!
Medium
SSH Into Localhost
Practice SSH without a second machine. All commands are identical to a real remote server.
sudo apt install openssh-serversudo systemctl start ssh && sudo systemctl enable sshssh $(whoami)@localhost- You are now SSH'd into your own machine
- Run
hostnameanduptime exitssh-keygen -t ed25519— generate SSH keys
Medium
Launch a Web Server in Under 10 Minutes
Install nginx and serve a real web page. On Windows this takes hours. On Linux, minutes.
sudo apt install nginxsudo systemctl start nginx- Open browser →
http://localhost— you have a web server sudo nano /var/www/html/index.html— edit the page- Refresh browser — see your changes live
sudo tail -f /var/log/nginx/access.log— watch requests live
Medium
Build a Complete LAMP Stack From Scratch
⚠ ADVANCED · Allow 45–60 minutes · Complete Modules 6, 7, 8, 9 first
Linux + Nginx + MySQL + PHP. The foundation of most of the web. You have all the skills — put them together.
sudo apt install nginx mysql-server php-fpm php-mysqlsudo mysql_secure_installation— secure MySQL- Configure nginx for PHP: edit
/etc/nginx/sites-available/defaultto enable PHP-FPM fastcgi pass sudo nano /var/www/html/info.php— add<?php phpinfo(); ?>sudo systemctl restart nginx php8.3-fpm- Visit
http://localhost/info.php— PHP info page appears sudo mysql→CREATE DATABASE myapp;sudo rm /var/www/html/info.php— security cleanup
Hard Advanced
Stretch Exercises — Modules 14 & 15
These exercises extend the skills from the premium modules. Complete the relevant module before attempting each one.
Exercise 14A — Customise Your Terminal Environment (Module 14)
Open ~/.bashrc in nano. Add: an alias ll for ls -la, an alias update that runs sudo apt update && sudo apt upgrade -y, and set export EDITOR=nano. Save, run source ~/.bashrc, and verify both aliases work. Bonus: change your PS1 prompt to show the current directory in a different colour.
Exercise 14B — vim Survival (Module 14)
Open any text file with vim /tmp/test.txt. Press i to enter insert mode. Type three lines of text. Press Escape. Type :w to save. Type :q to exit. Reopen with vim, navigate to line 2 using arrow keys, press dd to delete the line, then :wq to save and exit. You have survived vim.
Exercise 15A — Your First Automation Script (Module 15)
Write a script called morning-check.sh that: prints the current date and time, checks disk usage with df -h, shows memory with free -h, and lists any failed services with systemctl --failed. Make it executable with chmod +x, run it, then add it to crontab to run every morning at 08:00.
Exercise 15B — Backup Script (Module 15)
Modify the backup script from Module 14 to: back up your Documents folder, add a timestamp to the backup filename, keep only the last 5 backups (delete older ones with find), and write a success/failure log entry to /tmp/backup.log. Schedule it with cron to run every Sunday at 02:00.