Filesystem Hierarchy Standard - Wikipedia
Jump to content
From Wikipedia, the free encyclopedia
Linux standard for directory structure
Filesystem Hierarchy Standard
Abbreviation
FHS
Status
Published
Year started
14 February 1994
; 32 years ago
1994-02-14
Latest version
3.0
3 June 2015
; 10 years ago
2015-06-03
Organization
FreeDesktop.org
Previously:
Linux Foundation
Domain
Directory structure
Website
Official website
The
Filesystem Hierarchy Standard
FHS
) is a reference describing the conventions used for the layout of
Unix-like
systems. It has been made popular by its use in
Linux distributions
, but it is used by other Unix-like systems as well.
The latest version of the standard, version 3.0, was originally released on 3 June 2015 by the
Linux Foundation
It was republished on 6 November 2025 by
FreeDesktop
, which has since assumed maintenance of the specification.
Directory structure
edit
Filesystem hierarchy in
openSUSE
In the FHS, all files and
directories
appear under the
root directory
, even if they are stored on different physical or virtual devices. Some of these directories only exist in a particular system if certain subsystems, such as the
X Window System
, are installed.
Most of these directories exist in all
Unix-like
operating systems and are generally used in much the same way; however, the descriptions here are those used specifically for the FHS and are not considered authoritative for platforms other than Linux.
Directory
Description
Primary hierarchy
root and
root directory
of the entire file system hierarchy.
/bin
Essential command
binaries
that need to be available in
single-user mode
, including to bring up the system or repair it,
for all users (e.g.,
cat
ls
cp
).
/boot
Boot loader
files (e.g.,
kernels
initrd
).
/dev
Device files
(e.g.,
/dev/null
/dev/disk0
/dev/sda1
/dev/tty
/dev/random
).
/etc
Host-specific system-wide
configuration files
There has been controversy over the meaning of the name itself. In early versions of the UNIX Implementation Document from Bell Labs,
/etc
is referred to as the
etcetera
directory
as this directory historically held everything that did not belong elsewhere (however, the FHS restricts
/etc
to static configuration files and may not contain binaries).
Since the publication of early documentation, the directory name has been re-explained in various ways. Later interpretations include
backronyms
such as "Editable Text Configuration" or "Extended Tool Chest".
/etc/opt
Configuration files for add-on packages stored in
/opt
/etc/sgml
Configuration files, such as catalogs, for software that processes
SGML
/etc/X11
Configuration files for the
X Window System
, version 11.
/etc/xml
Configuration files, such as catalogs, for software that processes
XML
/home
Users'
home directories
, containing saved files, personal settings, etc.
/lib
Libraries
essential for the
binaries
in
/bin
and
/sbin
/lib
Alternate format essential libraries. These are typically used on systems that support more than one executable code format, such as systems supporting
32-bit
and
64-bit
versions of an
instruction set
. Such directories are optional, but if they exist, they have some requirements.
/media
Mount points for
removable media
such as
CD-ROMs
(appeared in FHS-2.3 in 2004).
/mnt
Temporarily
mounted
filesystems.
/opt
Add-on
application software
packages
10
/proc
Virtual
filesystem
providing
process
and
kernel
information as files. In Linux, corresponds to a
procfs
mount. Generally, automatically generated and populated by the system, on the fly.
/root
Home directory
for the
root
user.
/run
Run-time variable data: Information about the running system since last boot, e.g., currently logged-in users and running
daemons
. Files under this directory must be either removed or truncated at the beginning of the boot process, but this is not necessary on systems that provide this directory as a
temporary filesystem
tmpfs
) (appeared in FHS-3.0 in 2015).
/sbin
Essential system binaries (e.g.,
fsck
init
route
).
/srv
Site-specific data served by this system, such as data and scripts for web servers, data offered by
FTP
servers, and repositories for
version control systems
(appeared in FHS-2.3 in 2004).
/sys
Contains information about devices, drivers, and some kernel features.
11
/tmp
Directory for temporary files
(see also
/var/tmp
). Often not preserved between system reboots and may be severely size-restricted.
/usr
Secondary hierarchy
for read-only user data; contains the majority of (
multi-
)user utilities and applications.
NB 1
Should be shareable and read-only.
12
13
/usr/bin
Non-essential command
binaries
(not needed in
single-user mode
); for all users.
/usr/include
Standard
include files
/usr/lib
Libraries
for the
binaries
in
/usr/bin
and
/usr/sbin
/usr/libexec
Binaries run by other programs that are not intended to be executed directly by users or shell scripts (optional).
/usr/lib
Alternative-format libraries (e.g.,
/usr/lib32
for 32-bit libraries on a 64-bit machine (optional)).
/usr/local
Tertiary hierarchy
for local data, specific to this host. Typically has further subdirectories (e.g.,
bin
lib
share
).
NB 2
/usr/sbin
Non-essential system binaries (e.g.,
daemons
for various
network services
).
/usr/share
Architecture-independent (shared) data.
/usr/src
Source code
(e.g., the kernel source code with its header files).
/usr/X11R6
X Window System
, Version 11, Release 6 (up to FHS-2.3, optional).
/var
Variable files: files whose content is expected to continually change during normal operation of the system, such as logs, spool files, and temporary e-mail files.
/var/cache
Application cache data. Such data are locally generated as a result of time-consuming I/O or calculation. The application must be able to regenerate or restore the data. The cached files can be deleted without loss of data.
/var/lib
State information. Persistent data modified by programs as they run (e.g., databases, packaging system metadata, etc.).
/var/lock
Lock files. Files keeping track of resources currently in use.
/var/log
Log files. Various logs.
/var/mail
Mailbox files. In some distributions, these files may be located in the deprecated
/var/spool/mail
/var/opt
Variable data from add-on packages that are stored in
/opt
/var/run
Run-time variable data. This directory contains system information data describing the system since it was booted.
14
In FHS 3.0,
/var/run
is replaced by
/run
; a system should either continue to provide a
/var/run
directory or provide a symbolic link from
/var/run
to
/run
for backward compatibility.
15
/var/spool
Spool
for tasks waiting to be processed (e.g., print queues and outgoing mail queue). Formerly also contained user mailbox files at
/var/spool/mail
16
/var/tmp
Temporary files to be preserved between reboots.
FHS compliance
edit
Most
Linux distributions
follow the Filesystem Hierarchy Standard and declare it their own policy to maintain FHS compliance.
17
18
19
20
GoboLinux
21
and
NixOS
22
provide examples of intentionally non-compliant filesystem implementations.
Some distributions generally follow the standard but deviate from it in some areas. The FHS is a "trailing standard", and so documents common practices at a point in time. Of course, times change, and distribution goals and needs call for experimentation. Some common deviations include:
Modern Linux distributions include a
/sys
directory as a
virtual filesystem
sysfs
, comparable to
/proc
, which is a
procfs
), which stores and allows modification of the devices connected to the system,
23
whereas many traditional
Unix-like
operating systems use
/sys
as a
symbolic link
to the
kernel
source tree.
24
Many modern Unix-like systems (such as
FreeBSD
and
OpenBSD
) via their
ports systems
install third-party packages into
/usr/local
, while keeping code considered part of the operating system in
/usr
Some Linux distributions no longer differentiate between
/lib
and
/usr/lib
and have
/lib
symlinked to
/usr/lib
25
Some Linux distributions no longer differentiate between
/bin
and
/usr/bin
and between
/sbin
and
/usr/sbin
. They may symlink
/bin
to
/usr/bin
and
/sbin
to
/usr/sbin
. Other distributions choose to consolidate all four, symlinking them to
/usr/bin
26
Modern Linux distributions include a
/run
directory as a
temporary filesystem
tmpfs
), which stores volatile runtime data, following the FHS version 3.0. According to the FHS version 2.3, such data were stored in
/var/run
, but this was a problem in some cases because this directory is not always available at early boot. As a result, these programs have had to resort to workarounds, such as using
/dev/.udev
/dev/.mdadm
/dev/.systemd
or
/dev/.mount
directories, even though the device directory is not intended for such data.
27
Among other advantages, this makes the system easier to use normally with the root filesystem mounted read-only.
For example, below are the changes
Debian
made in its 2013 Wheezy release:
28
/dev/.*
/run/*
/dev/shm
/run/shm
/dev/shm/*
/run/*
/etc/*
(writeable files) →
/run/*
/lib/init/rw
/run
/var/lock
/run/lock
/var/run
/run
/tmp
/run/tmp
History
edit
FHS was created as the FSSTND (short for "Filesystem Standard"
29
), largely based on similar standards for other
Unix-like
operating systems, such as the
Version 7 Unix
hier(7)
from 1979,
30
the
SunOS
4.x
filesystem(7)
31
and its successor, the
Solaris
filesystem(7)
32
33
and the FreeBSD
hier(7)
34
Release history
edit
Version
Release date
Notes
Unsupported:
1.0
1994-02-14
FSSTND
35
Unsupported:
1.1
1994-10-09
FSSTND
36
Unsupported:
1.2
1995-03-28
FSSTND
37
Unsupported:
2.0
1997-10-26
FHS 2.0 is the direct successor for FSSTND 1.2. Name of the standard was changed to Filesystem Hierarchy Standard.
38
39
40
Unsupported:
2.1
2000-04-12
FHS
41
42
43
Unsupported:
2.2
2001-05-23
FHS
44
Unsupported:
2.3
2004-01-29
FHS
45
Latest version:
3.0
2015-05-18
FHS
46
Legend:
Unsupported
Supported
Latest version
Preview version
Future version
See also
edit
Hierarchical file system
Unix directory structure
XDG Base Directory Specification
Notes
edit
The name is historical, and dates back to when
/usr
was used for user home directories on
Unix
; see the entry for
/usr
in the table in
Unix filesystem § Conventional directory layout
Historically and strictly according to the standard,
/usr/local
is for data that must be stored on the local host (as opposed to
/usr
, which may be mounted across a network). Most of the time
/usr/local
is used for installing software/data that are
not
part of the standard operating system distribution (in such case,
/usr
would only contain software/data that
are
part of the standard operating system distribution). It is possible that the FHS standard may in the future be changed to reflect this de facto convention.
References
edit
"FHS"
The Linux Foundation Wiki
. Retrieved
4 January
2022
"FHS 3.0 Released"
The Linux Foundation Wiki
. Retrieved
22 February
2023
"Filesystem Hierarchy Standard – Version 3.0"
. FreeDesktop.org. 6 November 2025
. Retrieved
6 November
2025
"FreeDesktop.org Adopts The Filesystem Hierarchy Standard"
Phoronix
. 6 November 2025
. Retrieved
6 November
2025
"hier(7)"
man7.org
. Retrieved
6 January
2021
hier(7)
Linux
Programmer's
Manual
– Overview, Conventions and Miscellanea
DeFelice, J. (17 March 1972). "E.0".
Preliminary Release of UNIX Implementation Document
(PDF)
. p. 8. IMO.1-1
. Retrieved
6 June
2024
"/etc : Host-specific system configuration"
Filesystem Hierarchy Standard 2.3
. Retrieved
18 February
2016
Cliff (3 March 2007).
"Define - /etc?"
ask.slashdot.org
. Retrieved
5 October
2025
"/opt : Add-on application software packages"
Filesystem Hierarchy Standard 2.3
. Retrieved
18 February
2016
"/sys : Kernel and system information virtual filesystem"
Filesystem Hierarchy Standard 3.0
. Retrieved
4 June
2017
"Chapter 4. The /usr Hierarchy"
Filesystem Hierarchy Standard 2.3
. Retrieved
5 October
2025
"Chapter 4. The /usr Hierarchy, Section 4.1 Purpose"
Filesystem Hierarchy Standard 3.0
. Retrieved
5 October
2025
"/var/run : Run-time variable data"
Filesystem Hierarchy Standard 2.3
. Retrieved
5 October
2025
"5.13. /var/run : Run-time variable data"
Filesystem Hierarchy Standard 3.0
. Retrieved
5 October
2025
"File System Standard"
(PDF)
. Linux Foundation. 5.11.1. Purpose
. Retrieved
5 October
2025
"Chapter 2. File System Structure and Maintenance"
Red Hat
. Retrieved
5 October
2025
Eckert, Jason W. (12 May 2006).
SUSE Linux Enterprise Server Administration (Course 3037)
. Course Technology.
ISBN
978-1-4188-3731-0
OCLC
84900687
OL
9875721M
"9.1. File system hierarchy"
debian.org
. Retrieved
5 October
2025
"LinuxFilesystemTreeOverview"
Community Ubuntu Documentation
. Retrieved
5 October
2025
Muhammad, Hisham (9 May 2003).
"The Unix tree rethought: an introduction to GoboLinux"
gobolinux.org
. Retrieved
4 October
2016
Dolstra, Eelco; Löh, Andres (September 2008).
NixOS: A Purely Functional Linux Distribution
(PDF)
ICFP 2008: 13th ACM SIGPLAN International Conference on Functional Programming
nixos.org
. Victoria, British Columbia, Canada. pp.
367–
378
. Retrieved
5 October
2025
"5.3 About the /sys Virtual File System"
docs.oracle.com
. Oracle. Archived from
the original
on 8 July 2016
. Retrieved
8 July
2016
Lehey, Greg (May 2003) [March 1997].
The Complete FreeBSD: Documentation from the Source
(Fourth ed.). Beijing: O'Reilly Media, Incorporated. pp. 188, 609.
ISBN
978-0-596-00516-0
LCCN
2003278281
OCLC
51780648
OL
3707136M
McRae, Allan (14 July 2014).
"The /lib directory becomes a symlink"
archlinux.org
Archived
from the original on 9 September 2014
. Retrieved
14 December
2019
McRae, Allan (3 June 2013).
"Binaries move to /usr/bin requiring update intervention"
archlinux.org
Archived
from the original on 10 September 2014
. Retrieved
15 December
2019
Poettering, Lennart (30 March 2011).
"What's this /run directory doing on my system and where does it come from?"
devel@lists.fedoraproject.org
(Mailing list)
. Retrieved
5 October
2025
"ReleaseGoalsRunDirectory"
Debian Wiki
. Retrieved
5 October
2025
"FSSTND FAQ page"
ibiblio.org
. Retrieved
10 May
2016
hier(7)
Version 7 Unix
Programmer's
Manual
"SunOS 4.1.3 manual page for filesystem(7)"
man.freebsd.org
. the FreeBSD Man Pages library. 10 January 1988
. Retrieved
5 October
2025
filesystem(7)
Solaris 11.4
Standards, Environments, Macros, Character Sets, and Miscellany Reference
Manual
"filesystem man page – Solaris 10 11/06 Man Pages"
. Retrieved
15 October
2011
{{
cite web
}}
: CS1 maint: deprecated archival service (
link
hier(7)
FreeBSD
Miscellaneous Information
Manual
"Index of /pub/Linux/docs/fsstnd/old/fsstnd-1.0/"
. Ibiblio.org
. Retrieved
16 October
2012
"Index of /pub/Linux/docs/fsstnd/old/fsstnd-1.1/"
. Ibiblio.org
. Retrieved
16 October
2012
"Index of /pub/Linux/docs/fsstnd/old/"
. Ibiblio.org
. Retrieved
16 October
2012
"FHS 2.0 Announcement"
. Pathname.com
. Retrieved
16 October
2012
Quinlan, Daniel (14 March 2012) [1997],
"FHS 2.0 Announcement"
BSD, Linux, Unix and The Internet – Research by Kenneth R. Saborio
, San Jose, Costa Rica: Kenneth R. Saborio, archived from
the original
on 5 March 2016
, retrieved
18 February
2016
"Index of /pub/Linux/docs/fsstnd/"
. Ibiblio.org
. Retrieved
16 October
2012
Quinlan, Daniel.
"FHS 2.1 Announcement"
. Pathname.com
. Retrieved
16 October
2012
Quinlan, Daniel (13 April 2000).
"FHS 2.1 is released"
lists.debian.org
(Mailing list)
. Retrieved
5 October
2025
Quinlan, Daniel, ed. (12 April 2000).
"Filesystem Hierarchy Standard – Version 2.1, Filesystem Hierarchy Standard Group"
(PDF)
Acadia Linux Tutorials
. Wolfville, Nova Scotia, Canada: Jodrey School of Computer Science,
Acadia University
. Archived from
the original
(PDF)
on 27 March 2012
. Retrieved
18 October
2012
Russell, Rusty
; Quinlan, Daniel, eds. (23 May 2001).
"Filesystem Hierarchy Standard – Version 2.2 final Filesystem Hierarchy Standard Group"
(PDF)
Filesystem Hierarchy Standard
. Retrieved
18 February
2016
Russell, Rusty
; Quinlan, Daniel; Yeoh, Christopher, eds. (28 January 2004).
"Filesystem Hierarchy Standard – Filesystem Hierarchy Standard Group"
(PDF)
. Retrieved
29 November
2014
Yeoh, Christopher;
Russell, Rusty
; Quinlan, Daniel, eds. (19 March 2015).
"Filesystem Hierarchy Standard"
(PDF)
The Linux Foundation
. Retrieved
20 May
2015
External links
edit
Official website
FHS Mailing List
FHS repo
Official website (2015–2025, historical)
Original FHS website (archival)
systemd: file-hierarchy — File system hierarchy overview
UAPI Group Specifications: Linux File System Hierarchy
"Objectroot"
. Archived from the original on 16 October 2021.
A proposal for a new filesystem hierarchy, based on object-oriented design principles.
"Dotted Standard Filename Hierarchy"
. Archived from
the original
on 8 May 2005.
Yet another very different hierarchy (used in cLIeNUX).
hier(7)
Linux
Programmer's
Manual
– Overview, Conventions and Miscellanea
Computer files
Types
Binary file
text file
Data file
File format
List of file formats
List of File signatures
Magic number
Open file formats
Proprietary file formats
Metafile
Sidecar file
Sparse file
Swap file
System file
Temporary file
Zero-byte file
Properties
Filename
8.3 filename
Long filename
Filename mangling
Filename extension
List of filename extensions
File attribute
Extended file attributes
File size
Hidden file / Hidden directory
Organisation
Directory/folder
NTFS links
Temporary folder
Directory structure
File system
Filesystem Hierarchy Standard
Grid file system
Semantic file system
Path
Operations
Open
Close
Read
Write
Linking
File descriptor
Hard link
Shortcut
Alias
Shadow
Symbolic link
Management
Backup
File comparison
File copying
Data compression
File manager
Comparison of file managers
File system fragmentation
File-system permissions
File transfer
File sharing
File synchronization
File verification
Retrieved from "
Categories
Computer standards
File system directories
Linux
System administration
Unix file system technology
Hidden categories:
CS1 maint: deprecated archival service
Articles with short description
Short description is different from Wikidata
Use dmy dates from November 2021
CS1: unfit URL
Filesystem Hierarchy Standard
Add topic
US