Linux follows the Filesystem Hierarchy Standard (FHS) that organizes files in a tree-like structure. Each directory and file has a specific role in the system. Here’s a breakdown of the most important ones:
/ (Root Directory)
- Description: The top of the filesystem hierarchy.
- Importance: Every file or directory starts from here; root of the entire Linux filesystem.
/bin – Essential User Binaries
- Usage: Contains essential commands used by all users.
- Examples: ls, cp, mv, rm, bash
- Importance: Needed for the system to function even in single-user mode.
/sbin – System Binaries
- Usage: Contains system utilities for admin tasks.
- Examples: reboot, fsck, ifconfig, iptables
- Importance: Only accessible by root or sudo users; critical for maintenance.
/etc – Configuration Files
- Usage: Stores system-wide configuration files.
- Examples:
- /etc/passwd – User account info
- /etc/fstab – Disk mounting info
- /etc/hosts – Hostname to IP mapping
- /etc/ssh/sshd_config – SSH server config
- Importance: The heart of system customization.
/home – User Home Directories
- Usage: Personal directories for each user.
- Examples: /home/alice, /home/bob
- Importance: Stores user files, configs (.bashrc, .profile), and personal scripts.
/root – Root User’s Home Directory
- Usage: Home directory for the root (superuser).
- Importance: Used for system recovery, maintenance, and administration.
/boot – Boot Loader Files
- Usage: Contains kernel, initramfs, GRUB files.
- Examples:
- /boot/vmlinuz-* – Linux kernel
- /boot/initrd.img-* – Initial RAM disk
- /boot/grub/ – GRUB bootloader config
- Importance: Required to boot the system.
/var – Variable Files
- Usage: Dynamic content that changes during runtime.
- Examples:
- /var/log/ – Log files (e.g., syslog, auth.log)
- /var/spool/ – Print queues
- /var/mail/ – Mail inboxes
- Importance: Vital for logs, mail, and runtime data.
/usr – User Applications and Files
- Usage: Contains binaries, libraries, documentation for user apps.
- Examples:
- /usr/bin/ – Non-essential user commands
- /usr/lib/ – Libraries
- /usr/share/ – Shared data
- Importance: Most installed apps live here.
/lib – Essential Shared Libraries
- Usage: Contains libraries for binaries in /bin and /sbin.
- Examples: ld-linux.so, libc.so.6
- Importance: Without these, core system binaries won’t work.
/dev – Device Files
- Usage: Represents physical and virtual devices as files.
- Examples:
- /dev/sda1 – Disk partition
- /dev/null, /dev/zero – Virtual devices
- Importance: Interacts with hardware and virtual devices.
/proc – Kernel and Process Info
- Usage: Virtual filesystem with runtime system info.
- Examples:
- /proc/cpuinfo – CPU details
- /proc/meminfo – Memory info
- /proc/[PID]/ – Process-specific info
- Importance: Vital for performance monitoring and debugging.
/sys – System Hardware Info
- Usage: Interface to kernel devices and modules.
- Importance: Used by udev and systemd to manage devices.
/tmp – Temporary Files
- Usage: Stores temporary files created by apps.
- Importance: Cleaned automatically on reboot; should not store important data.
/media and /mnt – Mount Points
- Usage:
/media
– Auto-mounted removable devices (USB, CD)/mnt
– Temporary mount point for admin tasks
- Importance: Access external drives and remote filesystems.
/opt – Optional Software Packages
- Usage: Third-party applications not part of default install.
- Examples: /opt/google/chrome/, /opt/vmware/
- Importance: Clean separation of vendor software.
/srv – Service Data
- Usage: Stores data for services like web or FTP.
- Examples: /srv/www/, /srv/ftp/
- Importance: Good practice to store service-related data here.
/run – Runtime Process Info
- Usage: Temporary files (like PID files) used during boot and runtime.
- Importance: Helps in communication between daemons and services.
Important System Files
File | Description |
---|---|
/etc/passwd | User account info (non-sensitive) |
/etc/shadow | Encrypted user passwords |
/etc/group | Group account info |
/etc/fstab | Filesystem mount points |
/etc/hostname | System hostname |
/etc/resolv.conf | DNS servers |
/etc/network/interfaces or NetworkManager | Network config |
/etc/crontab | System cron jobs |
/var/log/syslog or /var/log/messages | System logs |
Bonus Tip: Use find
and locate
to Discover Files
find /etc -name "*.conf"
locate passwd
✅ Conclusion
Linux organizes its system with a well-defined hierarchy, making it logical, secure, and flexible. Understanding these directories and files is crucial for:
- System administration
- Debugging issues
- Writing scripts
- Managing users and services