Exploring the Linux File System Like a System Investigator
Exploring how Linux internally manages networking, users, processes, logs, and system behavior.

Whenever people start learning Linux, most of the focus initially goes toward commands like ls, cd, mkdir, or package installation. But after spending some real time exploring the Linux environment, one thing became very clear to me: the actual power of Linux is hidden inside its filesystem structure itself. Almost everything in Linux is represented through files and directories, whether it’s networking, devices, processes, users, services, permissions, or even running system behavior.
This assignment completely changed the way I looked at Linux because instead of just running commands, I started investigating how Linux internally organizes and controls the operating system. The interesting part is that many things we normally think of as “system features” are actually controlled through plain text files or virtual filesystem structures.
While exploring the filesystem, I focused mainly on networking configs, DNS behavior, logs, permissions, process information, service management, and low-level system structure. Some findings were expected, while others genuinely surprised me because of how transparent Linux internally is compared to many other operating systems.
Understanding Why /etc is So Important
One of the first things that immediately stood out was the /etc directory. Initially, it just looks like another folder, but after exploring it properly, it becomes obvious that /etc is basically one of the core control centers of the Linux system.
This directory contains configuration files for the operating system, services, networking, DNS, users, authentication, package managers, and many system-level behaviors. What surprised me most was how many critical configurations are simply stored as readable text files.
For example:
/etc/hostname
/etc/hosts
/etc/resolv.conf
/etc/passwd
These files directly affect how the system behaves. Instead of hiding everything inside binary databases or graphical settings panels, Linux exposes configurations transparently. This makes debugging and system administration much more controllable.
DNS Configuration Inside /etc/resolv.conf
One particularly interesting discovery was /etc/resolv.conf.
This file controls DNS resolution behavior for the system. Whenever the system tries resolving domain names like google.com into IP addresses, DNS servers listed inside this file become responsible for handling those queries.
Example content:
nameserver 8.8.8.8
nameserver 1.1.1.1
What I found interesting here was realizing that internet access is not just “automatic”. The system actually depends on configured DNS resolvers to translate human-readable domain names into machine-level IP addresses.
This file also showed how Linux networking remains modular. DNS behavior is separated cleanly from browsers or applications themselves.
User Information Inside /etc/passwd
Another very interesting discovery was /etc/passwd.
Initially, the name itself made it sound like passwords would be stored there directly, but modern Linux systems actually separate password hashes into /etc/shadow for security reasons.
The /etc/passwd file stores information about system users.
Example:
gaurang:x:1000:1000:Gaurang:/home/gaurang:/bin/bash
This single line contains:
Username
User ID
Group ID
Home directory
Default shell
What surprised me here was understanding that Linux user management is heavily file-driven internally. Instead of user accounts being hidden somewhere deep inside the operating system, they are represented structurally inside filesystem entries.
Security Implications of /etc/shadow
The /etc/shadow file became another important discovery because it directly highlighted Linux security practices.
Unlike /etc/passwd, this file stores encrypted password hashes and is only accessible with elevated permissions.
This separation solves a major security problem. Regular users may need access to basic user information, but exposing password hashes publicly would create huge risks.
This showed how Linux separates visibility from sensitive authentication data very carefully.
Process Information Inside /proc
One of the most fascinating discoveries was the /proc directory.
Initially, it looks like a normal folder, but it is actually a virtual filesystem dynamically generated by the kernel. It exposes live system and process information in real time.
For example:
/proc/cpuinfo
/proc/meminfo
/proc/uptime
These files expose live hardware and kernel-level information directly through filesystem entries.
Even more interesting was that every running process gets its own directory inside /proc.
Example:
/proc/1234
This may represent a running process having PID 1234.
Inside these process directories, Linux exposes:
Open file descriptors
Memory usage
Running executable paths
Environment variables
Process status
This completely changed how I understood Linux internally because processes themselves are exposed as filesystem structures.
Device Handling Through /dev
Another discovery that stood out heavily was /dev.
Linux treats hardware devices as files. That idea initially sounded strange, but after exploring /dev, it started making much more sense.
Inside /dev, there are entries representing:
Hard disks
USB devices
Terminals
Random generators
Audio devices
Examples:
/dev/sda
/dev/tty
/dev/null
One particularly interesting file was /dev/null.
Anything written into this file simply disappears. It acts like a black hole for unwanted output.
This filesystem-based device handling makes Linux extremely flexible because applications can interact with hardware using standard file operations.
System Logs Inside /var/log
The /var/log directory revealed how Linux tracks system activity internally.
System logs contain extremely useful debugging information related to authentication, boot processes, kernel activity, package installations, and services.
Examples:
/var/log/syslog
/var/log/auth.log
These logs showed how Linux constantly records system-level events. Instead of blindly guessing why something failed, administrators can inspect logs and trace actual causes.
This also highlighted how important logging becomes for production systems and servers.
Boot-Related Files Inside /boot
The /boot directory exposed how Linux stores bootloader and kernel-related files.
This directory contains:
Linux kernel images
Bootloader files
Initial RAM filesystem files
Before exploring it, I never really thought about how Linux actually starts itself internally. Seeing actual boot-related components stored separately made the boot process feel much more understandable instead of magical.
System Services and systemd
Another major discovery was system service management using systemd.
Inside directories like:
/etc/systemd
Linux stores service configurations controlling background processes and startup behavior.
This explained how services like:
Networking
SSH
Databases
Web servers
automatically start during boot.
What I found interesting here was that startup behavior itself is configuration-driven rather than hidden deep inside the operating system.
Routing Table Insights
Networking became even more interesting while exploring routing-related information.
The routing table determines how packets travel through networks and which gateway the system should use.
Commands like:
ip route
showed how Linux internally manages network traffic routing.
This helped me understand that networking is not just about having internet access. The operating system actively maintains routing logic deciding where packets should travel.
Permissions and Linux Security Model
One thing that repeatedly stood out throughout the exploration was Linux permissions.
Almost every important system component is permission-controlled.
For example:
-rw-r--r--
These permission structures determine:
Who can read
Who can write
Who can execute
What became clear is that Linux security heavily relies on permission isolation. Sensitive files like /etc/shadow remain protected because Linux enforces strict access controls at the filesystem level itself.
Environment Configuration Behavior
Another interesting area was environment variables.
Files like:
/etc/environment
~/.bashrc
control shell-level behavior and runtime environment settings.
This explained how PATH variables, custom commands, and shell configurations persist across sessions. Instead of hardcoding behavior globally, Linux allows flexible environment customization through configuration files.
Final Thoughts
This exploration completely changed the way I view Linux systems. Initially, the filesystem looked like a collection of folders and files, but after investigating deeper, it became obvious that Linux internally exposes huge parts of the operating system directly through structured filesystem components.
Networking, users, permissions, devices, services, logs, boot behavior, and processes are all deeply connected to filesystem organization. What impressed me most was Linux’s transparency. Instead of hiding system internals behind complicated abstractions, Linux exposes many low-level components in ways that administrators and developers can actually inspect and understand.
This assignment felt much less like learning commands and much more like investigating how an operating system truly works under the hood.




