The Linux file system follows the Filesystem Hierarchy Standard (FHS), which defines the directory structure and specific purpose of each component. Unlike Windows with its drive letters (C:, D:), Linux uses a unified hierarchical structure that begins from the root directory /.

File System Architecture

Fundamental Concept: Everything is a File

In Linux, everything is represented as a file: hardware devices, processes, network connections, and of course, regular files. This philosophy simplifies system interaction and provides a uniform interface.

Main System Directories

1. / (Root Directory)

  • Purpose: System root directory
  • Characteristics: Main mount point, contains all other directories
  • Permissions: Only accessible by root for writing

2. /bin (Essential User Binaries)

  • Content: Basic system commands available to all users
  • Examples: ls, cp, mv, cat, grep, bash
  • Importance: Necessary for system boot and basic operation
  • Technical note: These binaries must be available even in single-user mode
# Examples of commands in /bin
ls -la /bin/ls     # List command
file /bin/bash     # Bash shell
which cp           # Locate copy command
Code language: PHP (php)

3. /boot (Boot Loader Files)

  • Key components:
    • vmlinuz: Compressed Linux kernel
    • initrd/initramfs: Initial RAM file system
    • grub/: GRUB bootloader configuration
    • config-: Kernel configuration
  • Considerations: Critical for booting, requires regular backup

4. /dev (Device Files)

  • Device types:
    • Block devices: /dev/sda, /dev/nvme0n1 (storage)
    • Character devices: /dev/tty, /dev/null (terminals, special devices)
    • Pseudo-devices: /dev/zero, /dev/random
# Practical examples
lsblk                    # List block devices
ls -l /dev/sd*          # SATA/SCSI disks
cat /proc/devices       # Devices registered in kernel
Code language: PHP (php)

5. /etc (Configuration Files)

  • Organized structure:
    • /etc/passwd: User database
    • /etc/group: Group information
    • /etc/hosts: Local name resolution
    • /etc/fstab: File system table
    • /etc/systemd/: Systemd service configuration
    • /etc/network/: Network configuration (Debian/Ubuntu)
# Useful commands for /etc
sudo find /etc -name "*.conf" -type f    # Search configuration files
grep -r "hostname" /etc/                 # Search hostname configurations
Code language: PHP (php)

6. /home (User Home Directories)

  • Typical structure per user:
    • .bashrc: Bash shell configuration
    • .ssh/: SSH keys and configuration
    • Desktop/, Documents/, Downloads/: Standard XDG directories
  • Permissions: Each user has full control over their home directory

7. /lib and /lib64 (Shared Libraries)

  • Purpose: Essential shared libraries for the system
  • lib vs lib64: 32-bit vs 64-bit libraries
  • Important content:
    • libc.so: Standard C library
    • ld-linux.so: Dynamic linker
    • Kernel modules in /lib/modules/
# Check program libraries
ldd /bin/ls                    # Library dependencies
ldconfig -p | grep libc       # Library cache
Code language: PHP (php)

8. /media and /mnt (Mount Points)

  • /media: Automatic mounting of removable devices
  • /mnt: Manual temporary mounting of file systems
  • Modern usage: /media managed by systems like udisks2

9. /opt (Optional Software)

  • Philosophy: Third-party software installed as complete packages
  • Structure: /opt/[vendor]/[application]
  • Examples: Google Chrome, commercial applications, packaged software

10. /proc (Process Information Filesystem)

  • Nature: Virtual file system (takes no disk space)
  • System information:
    • /proc/cpuinfo: Processor information
    • /proc/meminfo: Memory information
    • /proc/[PID]/: Specific process information
    • /proc/sys/: Configurable kernel parameters
# Examples of /proc usage
cat /proc/version           # Kernel version
cat /proc/uptime           # System uptime
ls /proc/[PID]/            # Information about a specific process
Code language: PHP (php)

Additional Important Directories

/root (Root User Home)

  • Root user’s home directory
  • Separated from /home for security reasons
  • Accessible only with root privileges

/sbin (System Binaries)

  • System administration commands
  • Examples: fdisk, iptables, systemctl
  • Traditionally root-only, though some are accessible to normal users

/srv (Service Data)

  • Data served by the system
  • Suggested structure: /srv/[service]/
  • Examples: /srv/www/, /srv/ftp/

/sys (System Filesystem)

  • Virtual file system for kernel information
  • Sysfs interface for devices and drivers
  • Complements /proc with more structured information

/tmp (Temporary Files)

  • Temporary files for system and applications
  • Cleaned periodically (boot or tmpfiles)
  • Special permissions (sticky bit) for multi-user security

/usr (User System Resources)

  • Important secondary structure:
    • /usr/bin: User commands (non-essential)
    • /usr/sbin: Administration commands (non-essential)
    • /usr/lib: Libraries for programs in /usr/bin and /usr/sbin
    • /usr/local: Locally installed software
    • /usr/share: Shared data (documentation, icons, etc.)

/var (Variable Data)

  • Data that changes during operation:
    • /var/log: System log files
    • /var/cache: Application cache data
    • /var/spool: Data queues (mail, printing)
    • /var/lib: Persistent application state data
    • /var/run: Runtime data (PID files)

Best Practices and Security Considerations

Mounting and Permissions

# Check mount points
mount | column -t
df -h                      # Space usage by file system
findmnt                    # Tree view of mounts
Code language: PHP (php)

Efficient Navigation

# Useful navigation commands
find / -name "config" -type f 2>/dev/null    # Search configuration files
locate filename                              # Fast search (requires updatedb)
which command                                # Locate binaries in PATH
whereis program                              # Locate binaries, sources and manuals
Code language: PHP (php)

Backup and Maintenance

  • Critical directories for backup: /etc, /home, /var/lib, /opt
  • Directories that DON’T need backup: /tmp, /proc, /sys, /dev
  • Recommended strategy: Incremental backup of user data and configurations

Differences Between Distributions

Red Hat/CentOS/Fedora

  • Network configuration in /etc/sysconfig/network-scripts/
  • SELinux contexts in /etc/selinux/

Debian/Ubuntu

  • Network configuration in /etc/network/ (traditional) or /etc/netplan/ (Ubuntu 18+)
  • Specific directories like /etc/apt/

Arch Linux

  • Minimalist philosophy, fewer populated directories by default
  • Centralized configuration in /etc/

Diagnostic and Monitoring Tools

# File system analysis
du -sh /*                  # Space usage by root directory
ncdu /                     # Interactive disk usage analysis
lsof                       # Files opened by processes
fuser -v /path             # Processes using a file/directory
Code language: PHP (php)

Conclusion

The Linux file system provides a logical and predictable structure that, once understood, greatly facilitates system administration. Adherence to FHS ensures consistency across distributions and facilitates portability of scripts and knowledge.

Key points to remember:

  • The structure is hierarchical and unified
  • Each directory has a specific and well-defined purpose
  • Understanding this structure is fundamental for efficient administration
  • Command-line tools leverage this organization to provide powerful and flexible functionality

Mastery of the Linux file system is the foundation for becoming a competent system administrator and a more efficient developer in Unix-like environments.

image via LinkedIN

Scroll to Top