Skip to main content

Linux File System

Chapter Overview

In this chapter you will learn:

  • Linux filesystem philosophy
  • Everything is a file
  • Filesystem Hierarchy Standard (FHS)
  • Linux directory structure
  • Absolute and Relative paths
  • Inodes
  • File Types
  • Hidden Files
  • Hard Links
  • Symbolic Links
  • Real Server Examples
  • PocketMine Hosting Structure

Introduction

One of the biggest differences between Windows and Linux is:

The filesystem structure.

Windows:

C:\
D:\
E:\

Linux:

/

Everything starts from one root directory.

Linux Philosophy

Linux follows:

Everything is a File

This is one of the most important Linux concepts. In Linux, many things behave like files: ✅ Directories ✅ Hard Disks ✅ USB Devices ✅ Network Interfaces ✅ Processes ✅ System Information

Examples

Hard Drive:

/dev/sda

USB:

/dev/sdb

Terminal:

/dev/tty

CPU Information:

/proc/cpuinfo

Memory Information:

/proc/meminfo

Everything behaves like files.

Linux Filesystem Hierarchy

Everything starts from:

/

called:

Root Directory


Visualization

/
├── bin
├── boot
├── dev
├── etc
├── home
├── lib
├── media
├── mnt
├── opt
├── proc
├── root
├── run
├── sbin
├── srv
├── sys
├── tmp
├── usr
└── var

Filesystem Hierarchy Standard (FHS)

Linux follows a standard called:

FHS
Filesystem Hierarchy Standard

This ensures all Linux distributions use similar structures. This makes administration easier.

Root Directory

/

This is the parent of everything.

Example:

/home
/etc
/var
/usr

all exist inside:

/

Visualization

/

Everything

/home

Contains user files. Example:

/home/aayan
/home/admin
/home/student

Equivalent to:

C:\Users\

in Windows.

Example:

ls /home

Output:

aayan
student

User Directory Structure

/home/aayan
├── Documents
├── Downloads
├── Pictures
└── Desktop

Why Important?

This directory stores:

  • Personal files
  • Scripts
  • Projects
  • SSH keys
  • Downloads

PocketMine Example

/home/minecraft/server/

Usually server files are hosted inside:

/home

/root

Home directory of:

root user

Not same as:

/

Example:

/root

contains administrator files.

/etc

One of the most important directories. Contains:

Configuration Files

Examples:

/etc/passwd
/etc/hosts
/etc/ssh/
/etc/nginx/
/etc/mysql/

Server Examples

Nginx:

/etc/nginx/nginx.conf

SSH:

/etc/ssh/sshd_config

Why Important?

As Linux Administrator:

You will use /etc every day.

/var

Stores:

Variable Data

Examples:

  • Logs
  • Cache
  • Databases
  • Mail

Important Folders

/var/log
/var/cache
/var/www

Log Files

/var/log/syslog

Contains:

System Logs

Useful for troubleshooting.

Web Hosting Example

/var/www/html

Contains website files.

Apache usually serves files from here.

/usr

Contains:

Programs
Libraries
Documentation

Examples:

/usr/bin
/usr/lib
/usr/share

Visualization

/usr

├── bin
├── lib
└── share

/usr/bin

Contains commands. Examples:

ls
cp
mv
nano

Check location:

which ls

Output:

/usr/bin/ls

/bin

Contains essential commands. Examples:

cp
mv
cat
ls
bash

/sbin

Contains administrative commands. Examples:

shutdown
fdisk
reboot
mkfs

/tmp

Temporary files. Anyone can write here.

Example:

cd /tmp

Files may automatically be deleted.

Useful for:

  • Installers
  • Temporary scripts
  • Testing

/boot

Contains boot files. Examples:

Linux Kernel
GRUB
Initramfs

Visualization:

/boot

├── vmlinuz
├── initrd
└── grub

/dev

One of Linux's most powerful concepts. Contains:

Devices as files.

Examples:

/dev/sda
/dev/sdb
/dev/null
/dev/random

Hard Drives

/dev/sda

means:

First disk

Partitions

/dev/sda1
/dev/sda2

Useful Devices


/dev/null

The black hole. Everything sent here disappears. Example:

echo hello > /dev/null

Output:

Nothing

/dev/random

Generates random data.

/proc

Virtual filesystem. Contains:

Process Information
Kernel Information
CPU Information
Memory Information

Examples:

/proc/cpuinfo
/proc/meminfo
/proc/version

CPU Information

cat /proc/cpuinfo

Memory Information

cat /proc/meminfo

Process Information

Each process gets directory. Example:

/proc/1
/proc/1234

/sys

Contains kernel information. Used for:

  • Drivers
  • Hardware Management
  • Device Control

Mostly used by advanced users.

/media

Used for:

USB Drives
CD/DVD
External Storage

Example:

/media/aayan/USB

/mnt

Temporary mount location. Used by administrators. Example:

mount /dev/sdb1 /mnt

Linux Paths

There are two types.

Absolute Path

Starts from:

/

Example:

/home/aayan/Documents/file.txt

Relative Path

Starts from current directory. Example:

Documents/file.txt

Visualization

Current:

/home/aayan

Absolute:

/home/aayan/file.txt

Relative:

file.txt

Special Directories


Current Directory

.

Parent Directory

..

Examples:

cd ..

Go back one folder.

cd .

Current folder.

Hidden Files

Files beginning with:

.

are hidden. Examples:

.bashrc
.profile
.gitconfig
.ssh

Show hidden files:

ls -la

Why Hidden?

Usually:

  • Configurations
  • User Settings
  • Sensitive Data

Linux File Types


Regular File

-

Examples:

file.txt
test.php

Directory

d

l

Character Device

c

Block Device

b

Socket

s

Pipe

p

View:

ls -l

Example:

drwxr-xr-x

First character:

d

means directory.

Inodes

One of Linux's most important concepts.

What is an Inode?

An inode stores:

  • File Permissions
  • Owner
  • Group
  • Size
  • File Location
  • Timestamps

It does NOT store:

Filename

Visualization:

Filename

Inode

Actual Data Blocks

View Inodes

ls -i

Example:

128731 file.txt

Why Important?

Useful for:

  • File Recovery
  • Hard Links
  • Forensics
  • Filesystem Repair

Hard Links

Multiple filenames pointing to same inode.

Example:

ln file1 file2

Both files:

Share same inode.

Visualization:

file1

inode

file2

Properties

Symbolic Links

Like Windows shortcuts.

Create:

ln -s file1 link

Visualization:

link

file1

View Links

ls -l

Example:

link -> file1

Hard Link vs Symbolic Link

FeatureHardSymbolic
Same Inode
Cross Filesystems
Link Directories
Break if Original Deleted

Real Server Example

PocketMine Hosting:

/home/minecraft/

├── server/
├── backups/
├── plugins/
└── worlds/

Logs:

/var/log

PHP:

/etc/php

Nginx:

/etc/nginx

VPS Example

/

├── home
├── var
├── etc
├── root
└── usr

As Linux Administrator, these directories are used daily.

Useful Commands

Show filesystem:

tree /

Current directory:

pwd

Show hidden files:

ls -la

Show inode:

ls -i

Filesystem usage:

df -h

Disk usage:

du -sh

Exercises

Exercise 1

Navigate to:

/home

Exercise 2

Find:

/etc/passwd

Exercise 3

Exercise 4

Exercise 5

View inode numbers.

Mini Project

Create Linux structure:

/home/student

├── Projects
├── Scripts
├── Downloads
└── Backups

Create:

  • Hidden files
  • Hard links
  • Symbolic links

Summary

References

Filesystem Hierarchy Standard: https://refspecs.linuxfoundation.org/FHS_3.0/fhs/index.html Linux Filesystem: https://www.kernel.org/doc/html/latest/filesystems/

Next Chapter

➡ Linux Terminal Basics ➡ First Commands ➡ pwd ➡ ls ➡ cd ➡ Navigation Exercises