STLLUG - St. Louis Linux User Group
10/19/1995 : Filesystem Structure Standard Tutorial
Presenter: Matthew Feldt

Linux Filesystem Structure Standard

v1.2 released March 28, 1995

The official HTML version of the file system standard can be found at http://www.pathname.com/fhs/.


Describes the structure of the filesystem:
- Locations of files and directories
- Not how the data is written to disk
Why?
- To promote uniformity across distributions
- Simplfy development of new applications/features
Features:
- Distingishes between shareable and unshareable resources
- R/O /usr filesystem
- Well organized binary directories
ShareableUnshareable
Static/usr/etc
/boot
Dynamic/home/var/run
/var/spool/mail/var/lock

/(Root) Must contain all the files necessary to boot the machine single
/binEssential commands
/bootBoot loader files and optionally kernels
/devDevice files
/etcMachine local config files
/homeHome directories
/libShared libraries
/mntTemporary mount points
/procProcess information pseudo-filesystem
/rootHome directory for root
/sbinEssential system binaries
/tmpTemporary files
/usrSecond major hierarchy
/varVariable data (Third major hierarchy)

/bin

General rule:
If a user needs to execute it, put it in /bin
If only superuser or startup needs it, put it in /sbin
Required files:
arch, cat, chgrp, chmod, chown, cp, date, dd, df, dmesg, echo, ed, false, kill, ln, login, ls, mkdir, mknod, more, mount, mv, ps, pwd, rm, rmdir, sed, setserial, sh, stty, su, sync, true, umount, uname
All user-level recovery binaries should also be in /bin:
tar, cpio, gzip, gunzip, zcat
Some shells:
bash, sh (link to bash), tcsh, ash, zsh, pksh

/etc - Local configuration files. No binaries!!

Required files:
adjtime, csh.login, disktab, fdprm, fstab, gettydefs, group, inittab, issue, ld.so.conf, lilo.conf, magic, motd, mtab, mtools, passwd, profile, psdatabase, securetty, shells, syslog.conf, termcap, ttytype
exports, ftpusers, gateways, hosts, host.conf, hosts.equiv, hosts.lpd inetd.conf, networks, printcap, protocols, resolv.conf, rpc, services

/lib - Essential static libraries

libc.so.*, libm.so.*, ld.so, cpp (for compatability),

/lib/modules - kernel loadable modules (unspecified) organized by version

/sbin - utilities for system administration

Ordanary users should not have /sbin (/usr/sbin) on their paths.

Required files:
clock, getty, init, update, mkswap, swapon, swapoff, telinit, fastboot, fasthalt, halt, reboot, shutdown, fdisk, fsck, fsck.*, mkfs, mkfs.*, badblocks, dumpe2fs, e2fsck, mke2fs, mklost+found, tune2fs, lilo, arp, ifconfig, route
Optional files:
static ln, static sync, ldconfig, kbdrate, ctrlaltdel

/usr

/X11R6X11 R6
/X386X11 R5
/binMost user commands
/dictWord lists
/docMisc. documentation
/etcSite-wide system configuration
/gamesGames
/includeHeader files
/infoGnu info files
/libLibraries
/localLocal files
/manManual pages
/sbinNon-vital system admin binaries
/shareArchitecture-independent data
/srcSource code (e.g. linux kernel source)
The sybolic links may be present for compatibility
/usr/adm -> /var/adm
/usr/preserve -> /var/preserve
/usr/spool -> /var/spool
/usr/tmp -> /var/tmp

/usr/bin - Most user level commands

Example contents
User-level networking binaries: telnet, ftp, ncftp, ping
Shells: (links to) bash, sh, tcsh, perl, tcl
Text utilities etc.

/usr/sbin - Non-vital system binaries

All networking daemons: in.*


/var

/admSystem administration data, obsolete, symlink to /var/log
/catmanFormatted man pages
/libApplication state information
/localVariable data from /usr/local
/lockLock files
/logLog files
/namedDNS files
/nisNIS files
/preserveSaved editor states
/runFiles relevant to running processes (pid's)
/spoolQueued work, mail, cron, news
/tmpTemporary files, (to keep /tmp small)

Last Modified: 9 December 1995
St. Louis Unix Users Group - Linux SIG