HSR Sector 6 · Bangalore +91 96110 27980 Mon–Sat · 09:30–20:30
Chapter 3 of 20 — Linux Administration
beginner Chapter 3 of 20

Linux File System — Hierarchy, Directories & Paths Explained

By Vikas Swami, CCIE #22239 | Updated Mar 2026 | Free Course

The Filesystem Hierarchy Standard (FHS) — Why Structure Matters

The Linux file system hierarchy is organized according to the Filesystem Hierarchy Standard (FHS), a set of guidelines that define directory structure and directory contents. This structure is vital for system administrators, developers, and users because it ensures consistency across different Linux distributions, simplifying system management, troubleshooting, and software development.

FHS provides a clear separation of data and programs based on their purpose and lifecycle. For example, system binaries are stored in /bin and /usr/bin, while variable data like logs and spool files reside in /var. This separation allows for easier system updates, backups, and security management. When a new Linux distribution adheres to FHS, users and administrators can navigate and manage files confidently, knowing where to find system files, user data, or temporary information.

Understanding the Linux file system hierarchy also enhances security. By segregating user data (/home) from system files (/bin, /sbin), administrators can implement permissions and policies effectively. Moreover, a standardized structure simplifies scripting and automation, as tools can reliably reference locations across different systems.

For beginners, grasping the importance of FHS is fundamental. It provides the blueprint for understanding how Linux organizes its files, making it easier to learn commands, troubleshoot issues, and perform system maintenance. To explore practical applications and deepen your knowledge, consider enrolling in the Linux Administration course at Networkers Home.

Root Directory and Top-Level Directories — /, /bin, /etc, /home, /var

The Linux filesystem begins with the root directory, represented as /. This is the topmost directory in the hierarchy and serves as the starting point for all other directories and files. From root, the system branches into various top-level directories, each serving distinct functions essential for system operation and user data management.

The Root Directory (/)

The root directory is the foundation of the Linux filesystem. It contains critical system directories and files needed for booting and basic operation. Only users with root privileges can modify contents directly under /, making it a sensitive area that requires careful handling.

Key Top-Level Directories

  • /bin: Contains essential command binaries accessible to all users, such as ls, cp, and mv. These are fundamental utilities needed for system boot and repair.
  • /etc: Stores configuration files for the system and installed applications. Examples include /etc/passwd, /etc/fstab, and /etc/ssh/sshd_config.
  • /home: Holds personal directories for users. Each user has a dedicated subdirectory, e.g., /home/alice, where personal files, settings, and documents are stored.
  • /var: Contains variable data that changes during system operation, such as logs (/var/log), mail (/var/mail), and spool files.

Examples of Directory Uses

When a user logs into a Linux system, their personal files are stored in their /home/username directory. System binaries like bash reside in /bin, while configuration files that control system behavior are in /etc. Log files generated by services are in /var/log.

Understanding the top-level directories is crucial for navigation, system management, and troubleshooting. For example, if a service isn’t running, checking logs in /var/log can provide insights. For detailed tutorials and hands-on practice, explore Networkers Home's Linux Administration courses.

System Directories — /usr, /lib, /opt, /srv & /tmp

The Linux system directories extend beyond the root directory, supporting specific functions, application data, and temporary storage. These directories follow the FHS guidelines for organizing software and runtime data, which aids in system stability and modularity.

/usr — User System Resources

The /usr directory contains secondary programs, libraries, documentation, and application files. It is often mounted as a separate partition to keep system files isolated from user applications and data. Key subdirectories include:

  • /usr/bin: Additional user binaries not needed for minimal system operation.
  • /usr/lib: Libraries for binaries in /usr/bin and /usr/sbin.
  • /usr/share: Architecture-independent data like icons, language files, and documentation.

/lib and /lib64 — Essential Libraries

The /lib and /lib64 directories store shared libraries essential for the binaries in /bin and /sbin to run. They are loaded into memory during program execution.

/opt — Optional Application Software

The /opt directory is used for installing add-on software packages or large applications that are not part of the core system. For example, commercial applications or third-party software often reside here, e.g., /opt/Adobe.

/srv — Service Data

The /srv directory contains data for services provided by the system, such as web or FTP data. For instance, a web server might store its website files in /srv/www.

/tmp — Temporary Files

Temporary files created by applications or during system processes are stored in /tmp. This directory is usually cleared on reboot and is writable by all users, hence it must be used carefully to avoid security issues.

Comparison Table: System Directories

Directory Purpose Typical Contents Mounting
/usr User applications and data Binaries, libraries, documentation Often mounted separately
/lib Essential shared libraries Libraries needed for basic system boot Part of root filesystem
/opt Optional software packages Large third-party applications Typically on the root filesystem
/srv Service data Web, FTP, and other service files On main filesystem
/tmp Temporary files Temp data from applications Volatile, often cleared on reboot

Understanding these system directories allows Linux administrators to organize, manage, and troubleshoot effectively. To gain practical skills, check out Networkers Home's Linux Administration training.

Special Filesystems — /proc, /sys & /dev

Linux uses special virtual filesystems to provide interfaces to kernel data structures and device management. These filesystems do not store traditional data but represent kernel and hardware information dynamically, enabling user-space applications to interact with kernel components seamlessly.

/proc — Process and Kernel Information

The /proc filesystem provides a hierarchical view of kernel data structures. It includes information about running processes, system hardware, memory usage, and kernel parameters. For example:

cat /proc/cpuinfo
displays CPU details, while
ps aux
lists active processes.

/sys — Device and Kernel Parameter Interface

The /sys filesystem offers a modern interface to kernel subsystems, devices, and drivers. It allows configuration and status monitoring of hardware components. For example, to enable or disable a device, administrators can modify entries under /sys/class.

/dev — Device Files

The /dev directory contains device files that represent hardware devices like disks, terminals, and printers. These are special files used by device drivers. For instance:

/dev/sda
refers to the primary hard disk, and
/dev/ttyS0
is a serial port.

Technical Significance

These special filesystems abstract hardware and kernel data, enabling user-space tools to perform hardware management and system monitoring without kernel modifications. They are integral to system administration, scripting, and automation.

Absolute vs Relative Paths — Navigating with Confidence

File path navigation is fundamental in Linux, with two primary types of paths: absolute and relative. Understanding the difference is essential for effective command-line operations and scripting.

Absolute Paths

An absolute path specifies the complete location of a file or directory, starting from the root directory /. It provides an unambiguous reference, regardless of the current working directory.

  • Example: /home/alice/Documents/report.txt
  • Usage: cat /etc/hosts

Relative Paths

A relative path specifies the location relative to the current working directory. It does not start with /. This approach is convenient for navigating within a directory tree.

  • Example: If current directory is /home/alice, then Documents/report.txt refers to /home/alice/Documents/report.txt.
  • Usage: cd Documents followed by ls.

Navigating with Commands

pwd displays the current directory.
cd /etc changes to the /etc directory.
cd ../home moves up one level and then into /home.

Mastering absolute and relative paths enhances navigation efficiency and scripting reliability. For practical exercises, explore tutorials on Networkers Home Blog.

File Types in Linux — Regular, Directory, Link, Device & Socket

Linux recognizes various file types, each serving specific purposes. Differentiating these types is crucial for system management, permissions, and understanding how the system operates.

Regular Files

The most common type, representing data files like text documents, images, or binaries. They are ordinary files that contain user data or executable code.

ls -l file.txt
shows a hyphen (-) indicating a regular file.

Directories

Special files that contain other files and directories. They are identified by a d at the beginning of permissions in ls -l. Examples include /etc and /home.

Symbolic Links (Symlinks)

Special files that link to other files or directories, allowing flexible file system structures. Created with ln -s target link_name. For example:

ln -s /etc/hosts myhosts
creates a symlink named myhosts.

Device Files

Represent hardware devices, as in /dev/sda (disk) or /dev/ttyUSB0 (serial port). They enable programs to communicate with hardware peripherals.

Sockets

Special files used for inter-process communication (IPC). They facilitate network communication and process synchronization. Identified with an s at the beginning of permissions.

Summary of File Types

File Type Symbol in ls -l Description
Regular file - Standard data files, scripts, binaries
Directory d Folders containing files/subdirectories
Symlink l Links to other files/directories
Device file c or b Hardware interface; character or block device
Socket s Inter-process communication endpoint

Recognizing file types aids in permissions management and system configuration. To explore real-world scenarios, visit Networkers Home Blog.

Hard Links vs Symbolic Links — ln Command Deep Dive

Links in Linux provide flexible ways to reference files and directories. They enable multiple access points to the same data, facilitating system organization and management.

Hard Links

A hard link creates an additional directory entry pointing directly to the inode of a file. Both links are indistinguishable from the original; deleting one does not affect the data as long as at least one link remains.

  • Created with: ln filename linkname
  • Limitations:
    • Cannot link directories (to prevent filesystem loops)
    • Links must be on the same filesystem
ln /home/alice/file.txt /home/alice/link_to_file.txt
This creates a hard link named link_to_file.txt pointing to the same data as file.txt.

Symbolic Links (Symlinks)

Symlinks are special files that point to another filename or path. They can link across filesystems and directories, and can link to directories or files.

ln -s /home/alice/file.txt link_to_file.txt
This creates a symlink that references the original file. If the target is moved or deleted, the symlink becomes broken (dangling link).

Comparison Table: Hard Links vs Symlinks

Feature Hard Link Symlink
Point to Same inode as original file Path to target file/directory
Cross filesystem No Yes
Can link directories No Yes
Broken link if target deleted No Yes
Identification Same as original file Indicates a symlink (l in ls -l)

Mastering links enhances filesystem flexibility, backup strategies, and system organization. For practical guidance, consult Networkers Home Blog.

Mounting Filesystems — mount, umount, fstab & automount

Mounting is the process of attaching filesystems to the Linux directory tree, allowing access to data stored on different devices or network shares. Proper mounting ensures data accessibility and system stability.

Mount Command

The mount command attaches a filesystem to a directory. Example:

mount /dev/sdb1 /mnt/data
mounts the partition /dev/sdb1 at /mnt/data. To verify mounted filesystems, use mount or df -h.

Unmount Command

Safely detaching filesystems is done with umount. Example:

umount /mnt/data
Before unmounting, ensure no files are open or in use within the mount point.

/etc/fstab — Persistent Mounts

The /etc/fstab file defines filesystems to be mounted at boot time. Its entries specify device, mount point, filesystem type, options, dump, and pass. Example:

/dev/sdb1   /mnt/data   ext4   defaults   0   2
This configuration automates mounting during startup, simplifying system management.

Automount and Dynamic Mounting

Tools like autofs enable on-demand mounting of filesystems, useful for removable devices or network shares. Automount improves performance and reduces manual intervention.

Practical Considerations

  • Always back up /etc/fstab before editing
  • Use mount --bind for mounting directories within the same filesystem
  • Monitor mounted filesystems with df -h and mount

Proper mounting and management of filesystems are essential skills for Linux administrators. Enhance your expertise with our comprehensive Linux Administration courses at Networkers Home.

Key Takeaways

  • The Linux file system hierarchy follows the Filesystem Hierarchy Standard (FHS), promoting consistency and system stability.
  • Understanding top-level directories like /, /bin, /etc, /home, /var is fundamental for navigation and system management.
  • System directories such as /usr, /lib, /opt, /srv, /tmp organize software, libraries, optional applications, and temporary data.
  • Special filesystems like /proc, /sys, /dev provide interfaces to kernel and hardware components.
  • Distinguishing between absolute and relative paths is crucial for accurate navigation and scripting.
  • Various file types including regular files, directories, links, devices, and sockets, serve different purposes in Linux.
  • Links such as hard links and symbolic links enable flexible file referencing and system organization.

Frequently Asked Questions

What is the significance of the Linux file system hierarchy?

The Linux file system hierarchy, structured according to FHS, standardizes directory locations and their contents. This organization simplifies system administration, software development, and troubleshooting by providing predictable paths for system files, user data, and applications. It ensures consistency across distributions, making system management more efficient and secure.

How do absolute and relative paths differ in Linux?

Absolute paths specify the complete location of a file or directory starting from the root (/), ensuring an unambiguous reference regardless of current directory. Relative paths, on the other hand, define locations relative to the current working directory, making navigation quicker within directory trees. Mastering both enhances command-line efficiency and scripting accuracy.

What is the difference between hard links and symbolic links?

Hard links create additional directory entries pointing directly to the same inode, sharing the same data and not allowing links across filesystems or to directories. Deleting one hard link does not affect the data as long as another exists. Symlinks are separate files that point to another pathname, can link across filesystems, and may become broken if the target is moved or deleted. Both are valuable tools for filesystem management and organization.

Ready to Master Linux Administration?

Join 45,000+ students at Networkers Home. CCIE-certified trainers, 24x7 real lab access, and 100% placement support.

Explore Course