I’m a big fan of gamified learning. That led me to try out a popular Linux learning game: OverTheWire. What started as a quick curiosity turned into hours of addictive puzzle-solving, terminal wizardry, and the kind of “aha!” moments you only get when you figure something out for real.

Why I Love OverTheWire So Much

OverTheWireis a collection of wargames. Wargames are basicallyCTF-stylechallenges where you need to perform a particular task to get a special token as proof that you’ve cleared that level. In the context of OverTheWire Bandit, which is what I’ll primarily talk about, you need to search for and find a secret password to advance to the next level.

I’ve explored manygames that teach Linuxtill now. But OverTheWire really stands out due to how its environment is set up and how it challenges your knowledge in real scenario-based challenges. You’re dropped into real Linux systems to explore. Whether you’re new to Linux or an intermediate user, there’s something for you in the game.

The homepage of OverTheWire Bandit wargame.

The levels are designed to smoothly increase in difficulty. One thing I admire is that a particular level may also require commands and techniques from previous levels. This helps you retain your learning longer and solidify it.

What I love most about OverTheWire is how it treats you like a capable learner. It’s not trying to turn you into a robot who memorizes commands and techniques. Rather, it helps you become someone who can investigate, problem-solve, and reason through unfamiliar territory. These are skills that go beyond the terminal and show up everywhere in tech.

Linux terminal, a search bar in the center, and Tux holding a magnifying glass.

It Teaches You the Most Important Linux Skill

If there’s one thing that OverTheWire teaches better than any tutorial or YouTube video, it’s learning to figure things out on your own.

When you’re playing Bandit, the game doesn’t hold your hand. You’re told what your goal is, and you might get a hint or two about which commands might help. But that’s it. There’s no walkthrough embedded in the level, no tooltip explaining how the xyz command works, and definitely no pop-up showing you the exact syntax to use. You have to go look it up. You have to try, fail, tweak your approach, and try again. And that’s exactly what makes it so good.

Connecting to OverTheWire Bandit server via SSH.

To me, this is the essential Linux skill. Being OK with not knowing something, and then figuring it out through searching, reading manpages, and experimenting. It’s the kind of skill that separates someone who just copies Stack Overflow commands from someone who understands what they’re actually doing.

You Learn More Than Just Linux Commands

OverTheWire isn’t just about Linux commands. Even though Bandit is technically about that, the truth is, you end up learning so much more than just syntax.

For example, you get exposed to things like file permissions, network protocols, internet technology, and text encoding. I’ve had to decode hex strings, peek inside strange binary files, connect to obscure ports, and understand how the Linux file system is structured at a deeper level.

Once you finish Bandit, OverTheWire opens up even more. Leviathan gets into privilege escalation. There’s Narnia, which dives into memory exploitation and buffer overflows. Krypton focuses on cryptography basics. Maze contains reverse engineering and exploitation challenges. Each wargame builds on a different aspect of security, programming, or other computer science concepts.

Commands I Learned

Now, I wouldn’t say OverTheWire was the very first place I saw these commands, but it was the first time in a while that I had to actually use them with purpose. Some I had partially forgotten how to use, others I’d only ever used with copy-pasted syntax and a vague idea of what was happening. Playing through Bandit forced me to slow down and learn what each command really does, and how to use them in a smarter, more intentional way. Here are six that stood out.

ssh

SSH stands for Secure Shell. It’s the standard way toremotely connect to another machine’s terminal, especially over the internet. It’s like teleporting your command line session onto another computer, securely and with encryption, so that your data and password don’t get exposed during transit. Here’s the most basic syntax of the ssh command:

ssh is the first command you’d use in OverTheWire Bandit. In fact, you have to use it to even get started, since you have to connect to their server to play the game. You have to use it at every level, so it kind of becomes your second nature. Here’s how:

Here, you’re connecting to the bandit.labs.overthewire.org server as the bandit0 user over port 2220. Once connected, you get a shell on that remote machine and get access to the system.

find

findis a command-line tool forsearching through directoriesand locating files that match specific criteria such as name, size, permissions, modification time, and more. It’s kind of like the Linux version of a search function, but way more powerful. The basic syntax:

For example, let’s say you want to search for a file named ‘password.txt.’ Here’s the command for that:

This tells find to look in the current directory (.) and all its subdirectories for a file named exactly password.txt. In one of the early levels of Bandit, you had to search for a human-readable file, 1033 bytes in size, and not executable. The find command was suited for this scenario.

This searches for files in the particular directory that are exactly 1033 bytes (c stands for bytes) and excludes non-executable files.

sort

The sort command-line utility arranges lines of text in a specific order. It can be alphabetical, numerical, or based on other rules you define. It’s deceptively simple, but when combined with other tools likeuniq, cut, orawk, it becomes a powerhouse for processing text data. The basic syntax is as follows:

For example:

This will alphabetically sort the lines in file.txt and print them to your terminal. In one of the levels, you encounter a file containing numerous passwords. To find the correct one quickly, you had to sort the file alphabetically and filter the unique values. The sort command was useful for that:

Since uniq only works on consecutive duplicate lines, we needed to sort it first. Now it will only output lines that appear exactly once.

xxd

The xxd command creates a hex dump of a file or converts a hex dump back into its original binary form. It’s a bit of a niche utility, but extremely useful when you’re dealing with hidden data, encoded files, or trying to inspect the raw contents of something. In the most basic form, you pass a file name to it.

So if you have a file secret.txt:

This will output the contents of secret.txt inhexadecimalalongside the ASCII representation. You can also pass the -r flag to convert a hex dump back to a binary file. On one level, you’re given the hex dump of a binary file. Using xxd, you have to turn it back into a ZIP file.

This converts the text file back into a binary file, provided the hex dump is in the correct format.

strings

stringsis a command-line tool that extracts printable text from binary files. If you ever open a weird-looking file and see a wall of gibberish, strings helps pull out the readable bits like passwords, clues, or hidden messages. It’s especially useful when a file isn’t technically a text file, but still contains readable text somewhere inside.

This will scan through secret_file and print out any sequences of printable characters it finds. In one of the levels, there’s a file that contains human-readable text hidden among a big chunk of gibberish. To filter out the real text, you have to use the strings command on that file.

nc

nc, short for netcat, is a versatile networking utility that can read and write data across network connections using TCP or UDP. It’s often called the “Swiss Army knife” ofnetworking toolsbecause it can do so many things, such as setting up a simple server, debugging ports, orreading data from a socket.

This connects your machine to port 1234 on localhost, letting you send and receive raw text or data. On one level, you’re asked to submit a password to port 30000 of localhost. You can accomplish that using the nc command.

This submits your password or any other data to the chosen port of the chosen hostname.

Not everybody learns the same way. And that’s fine. If someone is absolutely new to Linux, they may find OverTheWire a bit challenging at first. However, there’s a way you can make it feel a bit easier. It will also help you make the most of this game.

Each level has a list of commands and some basic concepts you may need to clear to pass that level. My advice for you is not to rush any level just for the sake of completing it. Instead, take your time to read about each concept to understand it properly. The levels already link resources. If you still have doubts, then do some further research.

The same goes for the Linux commands. Read the man pages to get the hang of each command, and experiment with them to understand their behavior. After that, jump into the first level and start your journey from there.

Whether you’re new to Linux or already love it, you should definitely check out OverTheWire. No matter what your skills are, you’ll definitely learn something new too. There are so many othergreat resources to learn Linuxworth exploring.