Phase 0: Baseline Assessment
Phase 0: Baseline Skills Assessment
Target: Week 1 (Apr 21-27, 2026)
Purpose
Establish baseline competency level in each domain. Identify exact gaps. Set priority order for prep.
Assessment Protocol
For each domain, attempt the challenges below using only man pages as reference. Time yourself. Record what you had to look up vs what you knew.
Domain 1: Filesystem & Inodes
Challenge 1.1 — Can you explain what an inode IS?
Without looking: write down what data an inode stores. Then verify: man 7 inode (or man 2 stat → struct stat)
Challenge 1.2 — Hard vs soft links
# Create a file, hard link, and soft link
echo "test" > /tmp/arena-test
ln /tmp/arena-test /tmp/arena-hard
ln -s /tmp/arena-test /tmp/arena-soft
# Without running stat: predict the inode numbers and link counts
# Then verify:
stat -c 'inode=%i links=%h type=%F' /tmp/arena-test /tmp/arena-hard /tmp/arena-soft
# Delete the original. What happens to each link? Predict, then test.
rm /tmp/arena-test
cat /tmp/arena-hard # ?
cat /tmp/arena-soft # ?
Challenge 1.3 — Disk anomaly
# When does df show more used space than du?
# Hint: man lsof → +L1
# Answer: _______________________________
Challenge 1.4 — /proc as filesystem
# What filesystem type is /proc? How do you find out?
# man findmnt, man proc
findmnt /proc
# Read your own process info
cat /proc/self/status | head -20
ls -la /proc/self/fd
Domain 2: Process & System Calls
Challenge 2.1 — Process tree
# Draw the parent chain from your shell to PID 1. Predict, then verify:
pstree -sp $$
Challenge 2.2 — File descriptors
# How many FDs does your current shell have open?
ls /proc/$$/fd | wc -l
# What are FD 0, 1, 2? Without looking up:
# 0 = _____, 1 = _____, 2 = _____
# Verify: man stdout
Challenge 2.3 — strace a command
# Trace the system calls of a simple command. Identify open(), read(), write():
strace -e trace=open,read,write cat /etc/hostname 2>&1 | head -20
# man strace → -e trace=
Challenge 2.4 — Process holding a deleted file
# Create a file, open it with tail -f, delete it. Find it:
echo "arena" > /tmp/arena-deleted
tail -f /tmp/arena-deleted &
TAIL_PID=$!
rm /tmp/arena-deleted
# Find the deleted-but-open file:
ls -la /proc/$TAIL_PID/fd/ | grep deleted
# Recover it:
cat /proc/$TAIL_PID/fd/3
kill $TAIL_PID
Domain 3: Networking
Challenge 3.1 — Socket state
# List all listening TCP sockets with process names. No googling — man ss:
ss -tlnp
# What does each flag mean? Write from memory:
# -t = _____, -l = _____, -n = _____, -p = _____
Challenge 3.2 — Routing table
# Show the routing table. Identify default gateway.
ip route show
# What is the difference between 'ip route' and 'route'?
# man ip-route
Challenge 3.3 — Interface configuration
# Show all interfaces with IPs, state, and MAC:
ip -br addr
ip -br link
# What does -br mean? man ip → OUTPUT FORMAT
Domain 4: Security
Challenge 4.1 — AppArmor status
# Is AppArmor active? What profiles are enforced?
aa-status 2>/dev/null || cat /sys/kernel/security/apparmor/profiles
# man apparmor → DESCRIPTION
Challenge 4.2 — SELinux context
# Show SELinux context of a file (if available):
ls -Z /etc/passwd
# What are the 4 fields? user:role:type:level
# man selinux
Challenge 4.3 — Firewall rules
# List current nftables rules:
nft list ruleset
# If empty, list iptables:
iptables -L -n -v
# man nft → LIST
Domain 5: Automation
Challenge 5.1 — Strict mode script
# Write a script from memory that:
# 1. Uses set -euo pipefail
# 2. Has a cleanup trap
# 3. Takes one argument (a directory path)
# 4. Counts .adoc files in that directory recursively
# 5. Outputs the count
# Time limit: 5 minutes
Challenge 5.2 — Python stdlib only
# Without pip, write a Python script that:
# 1. Lists all files in /etc/ matching *.conf
# 2. For each, prints filename and line count
# 3. Uses only os, pathlib, sys
# Time limit: 5 minutes
# man python3 → or: python3 -c "help('pathlib')"
Domain 6: Network Architecture
Challenge 6.1 — Subnet from memory
# Given 10.50.0.0/16, create 4 subnets for: # - Management (50 hosts) # - Servers (200 hosts) # - Workstations (1000 hosts) # - IoT (2000 hosts) # Write the CIDR notation for each. # Time limit: 3 minutes
Scoring Your Assessment
| Domain | Score (0-5) | Notes |
|---|---|---|
1. Filesystem/Inodes |
_ |
|
2. Process/Syscalls |
_ |
|
3. Networking |
_ |
|
4. Security |
_ |
|
5. Automation |
_ |
|
6. Network Architecture |
_ |
0 = couldn’t attempt, 1 = needed man for everything, 2 = knew concept but not commands, 3 = completed with some lookups, 4 = completed with minor hesitation, 5 = instant, no reference needed
Man Page Navigation Drill
Before closing this assessment, verify you can navigate man:
# Section numbers — memorize these:
# 1 = user commands man 1 find
# 2 = system calls man 2 open
# 3 = library functions man 3 printf
# 5 = file formats man 5 passwd
# 7 = concepts man 7 inode
# 8 = admin commands man 8 ip
# Search within man:
# /pattern → forward search
# ?pattern → backward search
# n → next match
# N → previous match
# g → go to top
# G → go to bottom
# q → quit
# Find which section a topic is in:
man -k inode
man -k socket
man -k strace
# man -k = apropos — searches man page descriptions
# man apropos