Exploring the Linux File Hierarchy

Welcome to the intriguing world of the Linux file system! It’s time to set out on a journey through the perplexing pathways and structures that frame the establishment of your Linux framework. Understanding the Linux filesystem is like having an outline that guides you through the inward workings of your computer, permitting you to explore with certainty and proficiency. So, snatch your explorer’s cap, hone your compass, and let’s dig into the profundities of this basic component of Linux. 

What is a filesystem?

In its simplest form, a filesystem is a method of organizing and storing files on a storage device, such as a hard drive, solid-state drive, or even a USB flash drive. It defines how data is named, stored, retrieved, and managed. The filesystem provides a hierarchical structure that allows the operating system and users to locate and access files efficiently.

In Linux, the filesystem plays a crucial role in managing not only your files but also system configurations, application settings, and critical system data. It serves as the backbone of your Linux system, ensuring that everything is in its rightful place and easily accessible.

Understanding the Linux Filesystem Hierarchy

The Linux filesystem follows a standard hierarchy, which means that files and directories are organized in a consistent manner across different Linux distributions. This consistency makes it easier for users and administrators to locate important files and directories, regardless of the specific distribution they are using.

The filesystem hierarchy standard (FHS) defines the structure and purpose of each directory in the filesystem. Let’s take a tour of some of the most important directories:

  • / : The root directory is the top-level directory in the Linux filesystem. All other directories branch out from here. It contains essential system files and directories, such as /bin, /boot, /dev, and /etc.
  • /bin : This directory contains essential binary executable files (programs) that are needed for the system to function properly. It includes basic commands like ls, cp, and mv.
  • /boot : The /boot directory stores files required for booting the system, including the Linux kernel and bootloader configurations.
  • /dev : The /dev directory is unique because it contains files that represent devices on your system. In Linux, everything is treated as a file, including hardware devices. For example, /dev/sda might represent your first hard drive.
  • /etc : The /etc directory holds system-wide configuration files and settings. It’s where you’ll find configuration files for various services, daemons, and applications. For example, network configurations are typically stored in /etc/netplan or /etc/network.
  • /home : This is where user home directories reside. Each user on the system has their own directory under /home, such as /home/alice or /home/bob. Users can store their personal files, documents, and configurations in their home directories.
  • /lib : The /lib directory contains shared libraries and kernel modules required by the system and applications. These libraries provide additional functionality to programs, and the kernel modules extend the capabilities of the Linux kernel.
  • /media and /mnt : These directories are typically used for mounting external storage devices, such as USB drives or network shares. When you plug in a USB drive, it will usually be mounted under one of these directories.
  • /opt : The /opt directory is intended for installing additional software packages that are not part of the standard system installation. It’s often used for third-party applications.
  • /proc and /sys : These are special directories that provide dynamic information about the system and kernel. They don’t contain actual files but rather virtual files that provide runtime information about the system.
  • /run : The /run directory is used for storing runtime data and information about running processes and system services. It’s a temporary filesystem that is deleted when the system shuts down.
  • /tmp : The /tmp directory is designated for temporary files. It’s a place where applications can store temporary data, and it’s typically cleared on system boot or periodically.
  • /usr : The /usr directory contains read-only user data, including additional programs, libraries, and documentation. It’s divided into subdirectories like /usr/bin, /usr/lib, and /usr/share.
  • /var : The /var directory holds variable data, such as logs, databases, mail spools, and website content. It’s where applications store data that changes frequently or grows over time.

Understanding Inodes

In Linux, everything is a file, and each file is represented by an inode. An inode is a data structure that stores metadata about a file, including its ownership, permissions, timestamps, and location on the disk. It does not contain the actual content of the file but provides the necessary information to access and manage the file.

When you perform operations like creating, deleting, or modifying files, the filesystem updates the corresponding inodes. Each inode has a unique identifier, and files with the same content but different names or locations will have different inodes. You can view the inodes of files using the ls -i command.

File Permissions and Access Control

In the Linux filesystem, file permissions play a crucial role in maintaining security and controlling access to files and directories. Each file and directory has associated permissions that determine who can read, write, or execute the file and who can access the directory.

File permissions are represented by a set of letters (r for read, w for write, and x for execute) and are assigned to three categories: owner, group, and others. The owner of a file is typically the user who created it, while the group is a collection of users who share access to the file.

You can view the permissions of a file using the ls -l command. For example:

In this example, the file somefile.txt has read and write permissions for the owner (alice), and read permissions for the group (users) and others. You can modify permissions using the chmod command.

Managing Disk Space and Quotas

It’s important to keep an eye on disk space usage to ensure your system runs smoothly. The df command displays information about mounted filesystems and their usage, while the du command provides disk usage information for specific directories or files.

If you need to restrict disk space usage for certain users or groups, you can use disk quotas. Quotas allow you to set limits on the amount of disk space a user or group can consume. You can enable and manage quotas using the quota command.


The Linux filesystem is a meticulously organized structure that forms the foundation of your Linux system. Understanding its hierarchy, file permissions, inodes, and disk management techniques empowers you to navigate your system with confidence. It allows you to locate important files, configure system settings, and manage disk space efficiently. As you continue your Linux journey, remember that the filesystem is the compass that guides you through the vast landscape of files, directories, and data. Happy exploring!

Share your love

A software engineer who is innovative and committed to mentoring the next generation of technical talent. Sammy is passionate about technology and creating applications that have a real impact on people's lives.

Articles: 15

Newsletter Updates

Enter your email address below and subscribe to our newsletter