Understanding the Ubuntu Linux File System Hierarchy

Linux has inherited from UNIX a well-planned hierarchy for organizing where things may be found. It isn’t perfect, but it is generally logical and mostly consistent, although distributions do tend to make some modifications that force some thinking and adaptation when moving between, say, Fedora, Slackware, and Ubuntu. The following table shows some of the top-level directories that are part of a standard Linux distro.

Name

Description

/

The root directory

/bin

Essential commands

/boot

Boot loader files, Linux kernel

/dev

Device files

/etc

System configuration files

/home

User home directories

/lib

Shared libraries, kernel modules

/lost+found

Directory for recovered files (if found after a file system check)

/media

Mount point for removable media, such as DVDs and floppy disks

/mnt

Usual mount point for local, remote file systems

/opt

Add-on software packages

/proc

Kernel information, process control

/root

Super user (root) home

/sbin

System commands (mostly root only)

/srv

Holds information relating to services that run on your system

/sys

Real-time information on devices used by the kernel

/tmp

Temporary files

/usr

Software not essential for system operation, such as applications

/var

Variable data (such as logs); spooled files

Knowing these directories can help you find files when you need them. This knowledge can even help you partition hard drives when you install new systems by letting you choose to put certain directories on their own distinct partition, which can be useful for things like isolating directories from one another, such as a server security case like putting a directory like /boot that doesn’t change often on its own partition and making it read-only and unchangeable without specific operations being done by a super user during a maintenance cycle. Desktop users probably won’t need to think about that, but the directory tree is still quite useful to know when you want to find the configuration file for a specific program and set some program options system wide to affect all users.