Skip to main content

Command Palette

Search for a command to run...

Exploring the Linux File System Like a System Investigator

Exploring how Linux internally manages networking, users, processes, logs, and system behavior.

Published
•7 min read
Exploring the Linux File System Like a System Investigator
G
I enjoy blending technology with business to build solutions that create real impact. I’m fascinated by how technology empowers people, businesses, and startups. I believe thoughtful use of technology quietly improves lives, and that belief fuels everything I build and explore 💻.

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.

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.