Linux Permission Lab
An interactive playground for understanding Linux file permissions — flip real permission bits, watch chmod update live, break into a fake filesystem, and prove it in hands-on challenges.
A full curriculum, not just a calculator
Permission Simulator
Toggle owner, group and others like LED switches and watch symbolic, octal, binary and the chmod command update instantly.
Fake Filesystem
59 realistic files plus 2 symlinks across /etc, /var, /opt, /usr, /tmp, /home and /root — click through real-world permission mistakes.
Terminal Simulator
20+ simulated commands — ls, chmod, chown, find, grep, tree, stat and more — over a safe, fake shell.
21 Learning Cards
Every core topic — chmod, chown, umask, ACLs, special bits and more — with diagrams, examples, and warnings.
11 Interactive Labs
Guided, multi-step walkthroughs — from securing an SSH key to a full capstone permission audit.
88 Challenges
Twenty each across Beginner, Intermediate, Advanced and Expert — earn XP and level up as you go.
113-Question Quiz
Multiple-choice rounds across every topic, with instant explanations and lifetime accuracy tracking.
Security Analyzer
Every permission state is graded Safe, Warning or Critical with a plain-language explanation of why.
XP, Levels & Achievements
12 unlockable achievements, level progression, and a printable certificate once you clear the curriculum.
Three steps, in order
Learn
Work through 21 topic cards — diagrams, examples, tips and warnings for every core concept.
Practice
Apply it in 11 guided Labs and 88 tiered Challenges against a realistic fake filesystem.
Prove it
Clear the 113-question Quiz, unlock every achievement, and print a certificate once it's done.
Permission Simulator
Pick a file from the fake filesystem, or build permissions from scratch. Every toggle updates the live output and the security analysis below.
Permission Calculator
Type an octal mode or a symbolic string — both directions convert automatically.
Terminal Simulator
A simulated shell over the same fake filesystem. Try ls -la, tree, find shadow, stat backup.sql, chmod 600 backup.sql, or getfacl /opt/app/config/app.yml. Type help for the full command list.
Learn
21 reference topics covering the full permission model — each with a diagram, an example, command references, tips and warnings.
Interactive Labs
Eleven guided, multi-step walkthroughs — each mixes short explanations with graded checkpoints, from a first SSH key fix to a full capstone audit.
Challenges
88 labs across four tiers — Beginner, Intermediate, Advanced and Expert. Type the octal mode that solves each scenario and earn XP.
No challenges in this tier.
Quiz
113 multiple-choice questions across every topic. Rounds are 10 questions — filter by topic or mix them all.
Cheat Sheet
The permission modes you'll actually use, in one reference table.
| Octal | Symbolic | When to use it |
|---|
Reading the digits
Binary reference
Special bits
Common Linux commands
| Command | What it does |
|---|---|
| chmod 755 file | Set a file's permission mode. |
| chmod u+x file | Add execute for the owner only, symbolically. |
| chown user:group file | Change owner and group in one command. |
| chgrp group file | Change only the owning group. |
| umask 022 | Set the default permission mask for newly created files. |
| ls -l | List files with permissions, owner, group, size and date. |
| ls -la | Same, including hidden dotfiles. |
| stat file | Show detailed permission and metadata for one file. |
| find / -perm -4000 | List every SUID binary on the system. |
| find / -perm -o+w -type f | List every world-writable regular file. |
| getfacl file | Show a file's Access Control List entries. |
| setfacl -m u:name:rx file | Grant an individual user extra ACL access. |
Permission troubleshooting
The file is missing execute permission. Run chmod +x script.sh, or check with ls -l first.
The directory is missing execute permission for you. Read alone isn't enough to enter a directory — you need execute too.
You have execute but not write on the directory. Write permission on the directory itself (not the files inside it) controls whether you can create or delete entries.
The key is more permissive than 600. Run chmod 600 ~/.ssh/id_ed25519 and confirm ~/.ssh itself is 700.
Set the SGID bit on the directory (chmod g+s dir) so new files automatically inherit its group.
Best practices
- Never use 777 on anything you didn't specifically design to be world-writable.
- Private keys and credentials should be 600 (or 400 for read-only secrets).
- Directories need the execute bit to be entered — 644 on a directory locks everyone out of it.
- Prefer group permissions over world permissions when sharing access with a team.
- Audit SUID binaries regularly — they're one of the highest-value privilege-escalation targets.
- Pair any world-writable directory with the sticky bit, the same way /tmp does.
- Set a strict umask (like 077) in your shell profile if you default toward privacy.
Progress
Your XP, level, and stats across Challenges, Labs and Quiz — plus achievements and a certificate once you clear the curriculum.
What this is, and isn't
Linux Permission Lab is a browser-based teaching tool for the Linux permission model — the owner/group/others triad, octal and symbolic notation, ownership, ACLs, and the SUID/SGID/sticky special bits.
It includes a permission simulator, a fake filesystem, a simulated terminal, 21 learning topics, 11 guided labs, 88 challenges, and a 113-question quiz. Everything is simulated — nothing here touches a real file, shell, or system.
This project focuses on defensive understanding of permissions and does not include or endorse any offensive or exploitation tooling.
Most people learn chmod by copy-pasting a number they half-understand. This project exists to close that gap — to make the permission model something you can see change in real time, break safely, and rebuild from first principles, whether that's flipping a single bit in the Simulator or working through the Expert-tier capstone audit.
The whole project is MIT-licensed and dependency-free by design — no build step, no bundler, no framework lock-in. Anyone should be able to read every line of source, fork it, and deploy their own copy to GitHub Pages in minutes.
- Symlink and hard-link permission scenarios in the Filesystem module
- Exportable/shareable JSON progress and certificate verification
- A guided "path" mode that sequences Learn → Labs → Challenges → Quiz per topic
- Full Arabic translation of the remaining cheat-sheet prose and terminal help text
Linux Permission Lab is created and maintained by 0x0MAr.