Module 15 · Final Assessment 50 min

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 VirtualBoxInstall fundamentals, VM setupM4 — Installation
2. Explore the directory treeFHS, navigation, pathsM3 — File System Structure
3. Recreate Windows desktop structuremkdir, cp, mv from CLIM3 + M6
4. Install 4 essential appsapt install, package selectionM8 — Package Management
5. Create a user and manage permissionsadduser, usermod, sudoM10 — Users & Permissions
6. Every permission combinationchmod numeric + symbolicM10 — Users & Permissions
7. Monitor system for 5 minuteshtop, ps, free, df, journalctlM11 — System Monitoring
8. Explore the network from the terminalip addr, ping, ssM12 — Basic Networking
9. Count and search log filesgrep, wc, journalctlM6 + M11
10. Write your first Bash scriptnano, chmod +x, basic syntaxM6 + M14
11. SSH into localhostSSH server + client basicsM12 + M15
12. Launch a web serverapt install nginx, systemctl, ufwM8 + M11 + M12
13. Build a complete LAMP stackMulti-service install, config, troubleshootCombines M3–M12
14. Stretch (M13 / M14)Editors and shell scriptingM13 + M14
Exercise 01 — Installation

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.

  1. Download VirtualBox from virtualbox.org
  2. Download Ubuntu 24.04 LTS ISO from ubuntu.com
  3. Create a VM: 4GB RAM, 25GB disk, 2 CPUs
  4. Mount the ISO, boot, and complete installation
  5. Install VirtualBox Guest Additions for better performance

Easy
01
Exercise 02 — File System

Explore the Directory Tree

Navigate to 6 key system directories, list their contents, and identify what each contains. Build your mental map.

  1. cd /etc && ls — see system config files
  2. cd /var/log && ls — see log files
  3. cd /usr/bin && ls | head -20 — see executables
  4. cd ~ && ls -la — see your home directory including hidden files
  5. cd /tmp && ls — see temporary files
  6. Write down what you found in each

Easy
02
Exercise 03 — Terminal

Recreate Your Windows Desktop Structure

Using only the terminal, create a folder structure that mirrors your Windows Desktop. No GUI allowed.

  1. mkdir -p ~/LinuxDesktop/{Projects,Documents,Downloads,Screenshots}
  2. Create 3 text files: touch ~/LinuxDesktop/notes.txt readme.txt todo.txt
  3. List everything: ls -la ~/LinuxDesktop/
  4. Move one file: mv ~/LinuxDesktop/todo.txt ~/LinuxDesktop/Documents/
  5. Copy it back: cp ~/LinuxDesktop/Documents/todo.txt ~/LinuxDesktop/

Easy
03
Exercise 04 — Packages

Install 4 Essential Applications

Practice apt by installing a useful set of tools. Notice how fast it is compared to downloading .exe files.

  1. sudo apt update — always update first
  2. sudo apt install htop git curl neofetch
  3. Run neofetch — enjoy your system info display
  4. Run htop — press F10 to quit
  5. sudo apt remove neofetch — remove it
  6. sudo apt autoremove — clean up orphaned packages

Easy
04
Exercise 05 — Users

Create a User and Manage Permissions

Create a second user, grant sudo access, switch users, and set file permissions.

  1. sudo useradd -m -s /bin/bash testuser
  2. sudo passwd testuser — set a password
  3. sudo usermod -aG sudo testuser — give sudo access
  4. su - testuser — switch to that user
  5. touch /tmp/secretfile.txt
  6. chmod 600 /tmp/secretfile.txt — make it private
  7. ls -la /tmp/secretfile.txt — verify permissions
  8. exit — return to your main user

Medium
05
Exercise 06 — Permissions

Understand Every Permission Combination

Create files, apply different permission sets, and test what each user can and cannot do.

  1. echo '#!/bin/bash' > perm-test.sh
  2. Try running: ./perm-test.sh — permission denied
  3. Add execute: chmod +x perm-test.sh
  4. Run it: ./perm-test.sh — works now
  5. Make read-only: chmod 444 perm-test.sh
  6. Try editing: echo 'test' >> perm-test.sh — denied
  7. Restore: chmod 644 perm-test.sh

Medium
06
Exercise 07 — Monitoring

Monitor Your System for 5 Minutes

Use htop, df, and free to get a complete picture of your system's health.

  1. htop — identify top 3 processes by CPU. Press F6 to sort by memory.
  2. Press F9 on a process — see kill options. ESC to cancel.
  3. Press F10 to exit htop
  4. df -h — note how full each filesystem is
  5. free -h — check RAM and swap usage
  6. uptime — how long since last reboot?
  7. uname -a — what kernel version are you running?

Easy
07
Exercise 08 — Networking

Explore Your Network from the Terminal

Check your IP, test connectivity, and see what's listening on your system.

  1. ip addr show — find your IP address
  2. ping -c 4 google.com — test internet (-c 4 = 4 packets)
  3. sudo apt install traceroute && traceroute google.com
  4. ss -tulpn — see open ports
  5. curl -I https://google.com — see HTTP headers
  6. cat /etc/hosts — see your hosts file

Easy
08
Exercise 09 — Finding Files

Count and Search Log Files

Use find and grep to locate files and search inside them — the core of Linux troubleshooting.

  1. find /var/log -name "*.log" 2>/dev/null — find all .log files
  2. find /var/log -name "*.log" 2>/dev/null | wc -l — count them
  3. sudo grep -r "error" /var/log/syslog | tail -20
  4. find ~ -name "*.txt" -mtime -7 — modified in last 7 days
  5. find / -size +100M 2>/dev/null — files over 100MB

Medium
09
Exercise 10 — Scripting

Write Your First Bash Script

A script that greets you, shows the date, and lists your home directory. Your first automation.

  1. nano ~/greet.sh
  2. Type: #!/bin/bash, then echo "Hello, $(whoami)!", then echo "Today: $(date)", then ls -la ~
  3. Save: Ctrl+O, Enter, Ctrl+X
  4. chmod +x ~/greet.sh
  5. ~/greet.sh — run it
  6. sudo mv ~/greet.sh /usr/local/bin/greet — install it globally
  7. Now just type greet from anywhere!

Medium
10
Exercise 11 — SSH

SSH Into Localhost

Practice SSH without a second machine. All commands are identical to a real remote server.

  1. sudo apt install openssh-server
  2. sudo systemctl start ssh && sudo systemctl enable ssh
  3. ssh $(whoami)@localhost
  4. You are now SSH'd into your own machine
  5. Run hostname and uptime
  6. exit
  7. ssh-keygen -t ed25519 — generate SSH keys

Medium
11
Exercise 12 — Web Server

Launch a Web Server in Under 10 Minutes

Install nginx and serve a real web page. On Windows this takes hours. On Linux, minutes.

  1. sudo apt install nginx
  2. sudo systemctl start nginx
  3. Open browser → http://localhost — you have a web server
  4. sudo nano /var/www/html/index.html — edit the page
  5. Refresh browser — see your changes live
  6. sudo tail -f /var/log/nginx/access.log — watch requests live

Medium
12
Exercise 13 — Final Challenge

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.

  1. sudo apt install nginx mysql-server php-fpm php-mysql
  2. sudo mysql_secure_installation — secure MySQL
  3. Configure nginx for PHP: edit /etc/nginx/sites-available/default to enable PHP-FPM fastcgi pass
  4. sudo nano /var/www/html/info.php — add <?php phpinfo(); ?>
  5. sudo systemctl restart nginx php8.3-fpm
  6. Visit http://localhost/info.php — PHP info page appears
  7. sudo mysqlCREATE DATABASE myapp;
  8. sudo rm /var/www/html/info.php — security cleanup

Hard Advanced
13

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.