- Update to FHS 3.0 - Update spec file OBS-URL: https://build.opensuse.org/request/show/894916 OBS-URL: https://build.opensuse.org/package/show/Base:System/fhs?expand=0&rev=8
3053 lines
109 KiB
Plaintext
3053 lines
109 KiB
Plaintext
Filesystem Hierarchy Standard
|
|
|
|
LSB Workgroup, The Linux Foundation
|
|
|
|
Version 3.0
|
|
|
|
Copyright © 2015 The Linux Foundation
|
|
|
|
Copyright © 1994-2004 Daniel Quinlan
|
|
|
|
Copyright © 2001-2004 Paul 'Rusty' Russell
|
|
|
|
Copyright © 2003-2004 Christopher Yeoh
|
|
|
|
All trademarks and copyrights are owned by their owners, unless
|
|
specifically noted otherwise. Use of a term in this document
|
|
should not be regarded as affecting the validity of any
|
|
trademark or service mark.
|
|
|
|
Permission is granted to make and distribute verbatim copies of
|
|
this standard provided the copyright and this permission notice
|
|
are preserved on all copies.
|
|
|
|
Permission is granted to copy and distribute modified versions
|
|
of this standard under the conditions for verbatim copying,
|
|
provided also that the title page is labeled as modified
|
|
including a reference to the original standard, provided that
|
|
information on retrieving the original standard is included,
|
|
and provided that the entire resulting derived work is
|
|
distributed under the terms of a permission notice identical to
|
|
this one.
|
|
|
|
Permission is granted to copy and distribute translations of
|
|
this standard into another language, under the above conditions
|
|
for modified versions, except that this permission notice may
|
|
be stated in a translation approved by the copyright holder.
|
|
|
|
March 19, 2015
|
|
|
|
Abstract
|
|
|
|
This standard consists of a set of requirements and guidelines
|
|
for file and directory placement under UNIX-like operating
|
|
systems. The guidelines are intended to support
|
|
interoperability of applications, system administration tools,
|
|
development tools, and scripts as well as greater uniformity of
|
|
documentation for these systems.
|
|
__________________________________________________________
|
|
|
|
Dedication
|
|
|
|
This release is dedicated to the memory of Christopher Yeoh, a
|
|
long-time friend and colleague, and one of the original editors
|
|
of the FHS. Without his dedication this work would not have
|
|
been possible.
|
|
|
|
Table of Contents
|
|
|
|
1. Introduction
|
|
|
|
1.1. Purpose
|
|
1.2. Conventions
|
|
|
|
2. The Filesystem
|
|
3. The Root Filesystem
|
|
|
|
3.1. Purpose
|
|
3.2. Requirements
|
|
3.3. Specific Options
|
|
3.4. /bin : Essential user command binaries (for use by
|
|
all users)
|
|
|
|
3.4.1. Purpose
|
|
3.4.2. Requirements
|
|
3.4.3. Specific Options
|
|
|
|
3.5. /boot : Static files of the boot loader
|
|
|
|
3.5.1. Purpose
|
|
3.5.2. Specific Options
|
|
|
|
3.6. /dev : Device files
|
|
|
|
3.6.1. Purpose
|
|
3.6.2. Specific Options
|
|
|
|
3.7. /etc : Host-specific system configuration
|
|
|
|
3.7.1. Purpose
|
|
3.7.2. Requirements
|
|
3.7.3. Specific Options
|
|
3.7.4. /etc/opt : Configuration files for /opt
|
|
3.7.5. /etc/X11 : Configuration for the X Window
|
|
System (optional)
|
|
|
|
3.7.6. /etc/sgml : Configuration files for SGML
|
|
(optional)
|
|
|
|
3.7.7. /etc/xml : Configuration files for XML
|
|
(optional)
|
|
|
|
3.8. /home : User home directories (optional)
|
|
|
|
3.8.1. Purpose
|
|
3.8.2. Requirements
|
|
3.8.3. Home Directory Specifications and Conventions
|
|
|
|
3.9. /lib : Essential shared libraries and kernel modules
|
|
|
|
3.9.1. Purpose
|
|
3.9.2. Requirements
|
|
3.9.3. Specific Options
|
|
|
|
3.10. /lib<qual> : Alternate format essential shared
|
|
libraries (optional)
|
|
|
|
3.10.1. Purpose
|
|
3.10.2. Requirements
|
|
|
|
3.11. /media : Mount point for removable media
|
|
|
|
3.11.1. Purpose
|
|
3.11.2. Specific Options
|
|
|
|
3.12. /mnt : Mount point for a temporarily mounted
|
|
filesystem
|
|
|
|
3.12.1. Purpose
|
|
|
|
3.13. /opt : Add-on application software packages
|
|
|
|
3.13.1. Purpose
|
|
3.13.2. Requirements
|
|
|
|
3.14. /root : Home directory for the root user (optional)
|
|
|
|
3.14.1. Purpose
|
|
|
|
3.15. /run : Run-time variable data
|
|
|
|
3.15.1. Purpose
|
|
3.15.2. Requirements
|
|
|
|
3.16. /sbin : System binaries
|
|
|
|
3.16.1. Purpose
|
|
3.16.2. Requirements
|
|
3.16.3. Specific Options
|
|
|
|
3.17. /srv : Data for services provided by this system
|
|
|
|
3.17.1. Purpose
|
|
|
|
3.18. /tmp : Temporary files
|
|
|
|
3.18.1. Purpose
|
|
|
|
4. The /usr Hierarchy
|
|
|
|
4.1. Purpose
|
|
4.2. Requirements
|
|
4.3. Specific Options
|
|
4.4. /usr/bin : Most user commands
|
|
|
|
4.4.1. Purpose
|
|
4.4.2. Requirements
|
|
4.4.3. Specific Options
|
|
|
|
4.5. /usr/include : Directory for standard include files.
|
|
|
|
4.5.1. Purpose
|
|
4.5.2. Specific Options
|
|
|
|
4.6. /usr/lib : Libraries for programming and packages
|
|
|
|
4.6.1. Purpose
|
|
4.6.2. Specific Options
|
|
|
|
4.7. /usr/libexec : Binaries run by other programs
|
|
(optional)
|
|
|
|
4.7.1. Purpose
|
|
|
|
4.8. /usr/lib<qual> : Alternate format libraries
|
|
(optional)
|
|
|
|
4.8.1. Purpose
|
|
|
|
4.9. /usr/local : Local hierarchy
|
|
|
|
4.9.1. Purpose
|
|
4.9.2. Requirements
|
|
4.9.3. Specific Options
|
|
4.9.4. /usr/local/share : Local
|
|
architecture-independent hierarchy
|
|
|
|
4.10. /usr/sbin : Non-essential standard system binaries
|
|
|
|
4.10.1. Purpose
|
|
4.10.2. Requirements
|
|
|
|
4.11. /usr/share : Architecture-independent data
|
|
|
|
4.11.1. Purpose
|
|
4.11.2. Requirements
|
|
4.11.3. Specific Options
|
|
4.11.4. /usr/share/color : Color management
|
|
information (optional)
|
|
|
|
4.11.5. /usr/share/dict : Word lists (optional)
|
|
4.11.6. /usr/share/man : Manual pages
|
|
4.11.7. /usr/share/misc : Miscellaneous
|
|
architecture-independent data
|
|
|
|
4.11.8. /usr/share/ppd : Printer definitions
|
|
(optional)
|
|
|
|
4.11.9. /usr/share/sgml : SGML data (optional)
|
|
4.11.10. /usr/share/xml : XML data (optional)
|
|
|
|
4.12. /usr/src : Source code (optional)
|
|
|
|
4.12.1. Purpose
|
|
|
|
5. The /var Hierarchy
|
|
|
|
5.1. Purpose
|
|
5.2. Requirements
|
|
5.3. Specific Options
|
|
5.4. /var/account : Process accounting logs (optional)
|
|
|
|
5.4.1. Purpose
|
|
|
|
5.5. /var/cache : Application cache data
|
|
|
|
5.5.1. Purpose
|
|
5.5.2. Specific Options
|
|
5.5.3. /var/cache/fonts : Locally-generated fonts
|
|
(optional)
|
|
|
|
5.5.4. /var/cache/man : Locally-formatted manual
|
|
pages (optional)
|
|
|
|
5.6. /var/crash : System crash dumps (optional)
|
|
|
|
5.6.1. Purpose
|
|
|
|
5.7. /var/games : Variable game data (optional)
|
|
|
|
5.7.1. Purpose
|
|
|
|
5.8. /var/lib : Variable state information
|
|
|
|
5.8.1. Purpose
|
|
5.8.2. Requirements
|
|
5.8.3. Specific Options
|
|
5.8.4. /var/lib/<editor> : Editor backup files and
|
|
state (optional)
|
|
|
|
5.8.5. /var/lib/color : Color management information
|
|
(optional)
|
|
|
|
5.8.6. /var/lib/hwclock : State directory for
|
|
hwclock (optional)
|
|
|
|
5.8.7. /var/lib/misc : Miscellaneous variable data
|
|
|
|
5.9. /var/lock : Lock files
|
|
|
|
5.9.1. Purpose
|
|
|
|
5.10. /var/log : Log files and directories
|
|
|
|
5.10.1. Purpose
|
|
5.10.2. Specific Options
|
|
|
|
5.11. /var/mail : User mailbox files (optional)
|
|
|
|
5.11.1. Purpose
|
|
|
|
5.12. /var/opt : Variable data for /opt
|
|
|
|
5.12.1. Purpose
|
|
|
|
5.13. /var/run : Run-time variable data
|
|
|
|
5.13.1. Purpose
|
|
5.13.2. Requirements
|
|
|
|
5.14. /var/spool : Application spool data
|
|
|
|
5.14.1. Purpose
|
|
5.14.2. Specific Options
|
|
5.14.3. /var/spool/lpd : Line-printer daemon print
|
|
queues (optional)
|
|
|
|
5.14.4. /var/spool/rwho : Rwhod files (optional)
|
|
|
|
5.15. /var/tmp : Temporary files preserved between system
|
|
reboots
|
|
|
|
5.15.1. Purpose
|
|
|
|
5.16. /var/yp : Network Information Service (NIS) database
|
|
files (optional)
|
|
|
|
5.16.1. Purpose
|
|
|
|
6. Operating System Specific Annex
|
|
|
|
6.1. Linux
|
|
|
|
6.1.1. / : Root directory
|
|
6.1.2. /bin : Essential user command binaries (for
|
|
use by all users)
|
|
|
|
6.1.3. /dev : Devices and special files
|
|
6.1.4. /etc : Host-specific system configuration
|
|
6.1.5. /proc : Kernel and process information
|
|
virtual filesystem
|
|
|
|
6.1.6. /sbin : Essential system binaries
|
|
6.1.7. /sys : Kernel and system information virtual
|
|
filesystem
|
|
|
|
6.1.8. /usr/include : Header files included by C
|
|
programs
|
|
|
|
6.1.9. /usr/src : Source code
|
|
6.1.10. /var/spool/cron : cron and at jobs
|
|
|
|
7. Appendix
|
|
|
|
7.1. The FHS mailing list
|
|
7.2. Background of the FHS
|
|
7.3. General Guidelines
|
|
7.4. Scope
|
|
7.5. Acknowledgments
|
|
7.6. Contributors
|
|
|
|
Chapter 1. Introduction
|
|
|
|
Table of Contents
|
|
|
|
1.1. Purpose
|
|
1.2. Conventions
|
|
|
|
1.1. Purpose
|
|
|
|
This standard enables:
|
|
* Software to predict the location of installed files and
|
|
directories, and
|
|
* Users to predict the location of installed files and
|
|
directories.
|
|
|
|
We do this by:
|
|
* Specifying guiding principles for each area of the
|
|
filesystem,
|
|
* Specifying the minimum files and directories required,
|
|
* Enumerating exceptions to the principles, and
|
|
* Enumerating specific cases where there has been historical
|
|
conflict.
|
|
|
|
The FHS document is used by:
|
|
* Independent software suppliers to create applications which
|
|
are FHS compliant, and work with distributions which are
|
|
FHS compliant,
|
|
* OS creators to provide systems which are FHS compliant, and
|
|
* Users to understand and maintain the FHS compliance of a
|
|
system.
|
|
|
|
The FHS document has a limited scope:
|
|
* Local placement of local files is a local issue, so FHS
|
|
does not attempt to usurp system administrators.
|
|
* FHS addresses issues where file placements need to be
|
|
coordinated between multiple parties such as local sites,
|
|
distributions, applications, documentation, etc.
|
|
|
|
1.2. Conventions
|
|
|
|
We recommend that you read a typeset version of this document
|
|
rather than the plain text version. In the typeset version, the
|
|
names of files and directories are displayed in a
|
|
constant-width font.
|
|
|
|
Components of filenames that vary are represented by a
|
|
description of the contents enclosed in "<" and ">" characters,
|
|
<thus>. Electronic mail addresses are also enclosed in "<" and
|
|
">" but are shown in the usual typeface.
|
|
|
|
Optional components of filenames are enclosed in "[" and "]"
|
|
characters and may be combined with the "<" and ">" convention.
|
|
For example, if a filename is allowed to occur either with or
|
|
without an extension, it might be represented by
|
|
<filename>[.<extension>].
|
|
|
|
Variable substrings of directory names and filenames are
|
|
indicated by "*".
|
|
|
|
The sections of the text marked as Rationale are explanatory
|
|
and are non-normative.
|
|
|
|
Chapter 2. The Filesystem
|
|
|
|
This standard assumes that the operating system underlying an
|
|
FHS-compliant file system supports the same basic security
|
|
features found in most UNIX filesystems.
|
|
|
|
It is possible to define two independent distinctions among
|
|
files: shareable vs. unshareable and variable vs. static. In
|
|
general, files that differ in either of these respects should
|
|
be located in different directories. This makes it easy to
|
|
store files with different usage characteristics on different
|
|
filesystems.
|
|
|
|
"Shareable" files are those that can be stored on one host and
|
|
used on others. "Unshareable" files are those that are not
|
|
shareable. For example, the files in user home directories are
|
|
shareable whereas device lock files are not.
|
|
|
|
"Static" files include binaries, libraries, documentation files
|
|
and other files that do not change without system administrator
|
|
intervention. "Variable" files are files that are not static.
|
|
|
|
Rationale
|
|
|
|
Shareable files can be stored on one host and used on several
|
|
others. Typically, however, not all files in the filesystem
|
|
hierarchy are shareable and so each system has local storage
|
|
containing at least its unshareable files. It is convenient if
|
|
all the files a system requires that are stored on a foreign
|
|
host can be made available by mounting one or a few directories
|
|
from the foreign host.
|
|
|
|
Static and variable files should be segregated because static
|
|
files, unlike variable files, can be stored on read-only media
|
|
and do not need to be backed up on the same schedule as
|
|
variable files.
|
|
|
|
Historical UNIX-like filesystem hierarchies contained both
|
|
static and variable files under both /usr and /etc. In order to
|
|
realize the advantages mentioned above, the /var hierarchy was
|
|
created and all variable files were transferred from /usr to
|
|
/var. Consequently /usr can now be mounted read-only (if it is
|
|
a separate filesystem). Variable files have been transferred
|
|
from /etc to /var over a longer period as technology has
|
|
permitted.
|
|
|
|
Here is an example of a FHS-compliant system. (Other
|
|
FHS-compliant layouts are possible.)
|
|
shareable unshareable
|
|
static /usr /etc
|
|
/opt /boot
|
|
variable /var/mail /var/run
|
|
/var/spool/news /var/lock
|
|
|
|
Chapter 3. The Root Filesystem
|
|
|
|
Table of Contents
|
|
|
|
3.1. Purpose
|
|
3.2. Requirements
|
|
3.3. Specific Options
|
|
3.4. /bin : Essential user command binaries (for use by all
|
|
users)
|
|
|
|
3.4.1. Purpose
|
|
3.4.2. Requirements
|
|
3.4.3. Specific Options
|
|
|
|
3.5. /boot : Static files of the boot loader
|
|
|
|
3.5.1. Purpose
|
|
3.5.2. Specific Options
|
|
|
|
3.6. /dev : Device files
|
|
|
|
3.6.1. Purpose
|
|
3.6.2. Specific Options
|
|
|
|
3.7. /etc : Host-specific system configuration
|
|
|
|
3.7.1. Purpose
|
|
3.7.2. Requirements
|
|
3.7.3. Specific Options
|
|
3.7.4. /etc/opt : Configuration files for /opt
|
|
3.7.5. /etc/X11 : Configuration for the X Window System
|
|
(optional)
|
|
|
|
3.7.6. /etc/sgml : Configuration files for SGML (optional)
|
|
3.7.7. /etc/xml : Configuration files for XML (optional)
|
|
|
|
3.8. /home : User home directories (optional)
|
|
|
|
3.8.1. Purpose
|
|
3.8.2. Requirements
|
|
3.8.3. Home Directory Specifications and Conventions
|
|
|
|
3.9. /lib : Essential shared libraries and kernel modules
|
|
|
|
3.9.1. Purpose
|
|
3.9.2. Requirements
|
|
3.9.3. Specific Options
|
|
|
|
3.10. /lib<qual> : Alternate format essential shared libraries
|
|
(optional)
|
|
|
|
3.10.1. Purpose
|
|
3.10.2. Requirements
|
|
|
|
3.11. /media : Mount point for removable media
|
|
|
|
3.11.1. Purpose
|
|
3.11.2. Specific Options
|
|
|
|
3.12. /mnt : Mount point for a temporarily mounted filesystem
|
|
|
|
3.12.1. Purpose
|
|
|
|
3.13. /opt : Add-on application software packages
|
|
|
|
3.13.1. Purpose
|
|
3.13.2. Requirements
|
|
|
|
3.14. /root : Home directory for the root user (optional)
|
|
|
|
3.14.1. Purpose
|
|
|
|
3.15. /run : Run-time variable data
|
|
|
|
3.15.1. Purpose
|
|
3.15.2. Requirements
|
|
|
|
3.16. /sbin : System binaries
|
|
|
|
3.16.1. Purpose
|
|
3.16.2. Requirements
|
|
3.16.3. Specific Options
|
|
|
|
3.17. /srv : Data for services provided by this system
|
|
|
|
3.17.1. Purpose
|
|
|
|
3.18. /tmp : Temporary files
|
|
|
|
3.18.1. Purpose
|
|
|
|
3.1. Purpose
|
|
|
|
The contents of the root filesystem must be adequate to boot,
|
|
restore, recover, and/or repair the system.
|
|
* To boot a system, enough software and data must be present
|
|
on the root partition to mount other filesystems. This
|
|
includes utilities, configuration, boot loader information,
|
|
and other essential start-up data. /usr, /opt, and /var are
|
|
designed such that they may be located on other partitions
|
|
or filesystems.
|
|
* To enable recovery and/or repair of a system, those
|
|
utilities needed by an experienced maintainer to diagnose
|
|
and reconstruct a damaged system must be present on the
|
|
root filesystem.
|
|
* To restore a system, those utilities needed to restore from
|
|
system backups (on floppy, tape, etc.) must be present on
|
|
the root filesystem.
|
|
|
|
Rationale
|
|
|
|
The minimum requirements for the root filesystem should be as
|
|
small as reasonably possible, but no smaller. While many users
|
|
may not want the extra complexity of a partitioned system, the
|
|
option to keep the root small should be preserved for several
|
|
reasons:
|
|
* It is occasionally mounted from very small media.
|
|
* The root filesystem contains many system-specific
|
|
configuration files. Possible examples include a kernel
|
|
that is specific to the system, a specific hostname, etc.
|
|
This means that the root filesystem isn't always shareable
|
|
between networked systems. Keeping it small on servers in
|
|
networked systems minimizes the amount of lost space for
|
|
areas of unshareable files. It also allows workstations
|
|
with smaller local hard drives.
|
|
* While you may have the root filesystem on a large
|
|
partition, and may be able to fill it to your heart's
|
|
content, there will be people with smaller partitions. If
|
|
you have more files installed, you may find
|
|
incompatibilities with other systems using root filesystems
|
|
on smaller partitions. If you are a developer then you may
|
|
be turning your assumption into a problem for a large
|
|
number of users.
|
|
* Disk errors that corrupt data on the root filesystem are a
|
|
greater problem than errors on any other partition. A small
|
|
root filesystem is less prone to corruption as the result
|
|
of a system crash.
|
|
|
|
These considerations must be balanced against the need for a
|
|
minimally useful operating environment, for the sake of the
|
|
boot process as well as in failure recovery situations.
|
|
|
|
Applications must never create or require special files or
|
|
subdirectories in the root directory. Other locations in the
|
|
FHS hierarchy provide more than enough flexibility for any
|
|
package.
|
|
|
|
Rationale
|
|
|
|
There are several reasons why creating a new subdirectory of
|
|
the root filesystem is prohibited:
|
|
* It demands space on a root partition which the system
|
|
administrator may want kept small and simple for either
|
|
performance or security reasons.
|
|
* It evades whatever discipline the system administrator may
|
|
have set up for distributing standard file hierarchies
|
|
across mountable volumes.
|
|
|
|
Distributions should not create new directories in the root
|
|
hierarchy without extremely careful consideration of the
|
|
consequences including for application portability.
|
|
|
|
3.2. Requirements
|
|
|
|
The following directories, or symbolic links to directories,
|
|
are required in /.
|
|
Directory Description
|
|
bin Essential command binaries
|
|
boot Static files of the boot loader
|
|
dev Device files
|
|
etc Host-specific system configuration
|
|
lib Essential shared libraries and kernel modules
|
|
media Mount point for removable media
|
|
mnt Mount point for mounting a filesystem temporarily
|
|
opt Add-on application software packages
|
|
run Data relevant to running processes
|
|
sbin Essential system binaries
|
|
srv Data for services provided by this system
|
|
tmp Temporary files
|
|
usr Secondary hierarchy
|
|
var Variable data
|
|
|
|
Each directory listed above is specified in detail in separate
|
|
subsections below. /usr and /var each has a complete section in
|
|
this document due to the complexity of those directories.
|
|
|
|
3.3. Specific Options
|
|
|
|
The following directories, or symbolic links to directories,
|
|
must be in /, if the corresponding subsystem is installed:
|
|
Directory Description
|
|
home User home directories (optional)
|
|
lib<qual> Alternate format essential shared libraries
|
|
(optional)
|
|
root Home directory for the root user (optional)
|
|
|
|
Each directory listed above is specified in detail in separate
|
|
subsections below.
|
|
|
|
3.4. /bin : Essential user command binaries (for use by all users)
|
|
|
|
3.4.1. Purpose
|
|
|
|
/bin contains commands that may be used by both the system
|
|
administrator and by users, but which are required when no
|
|
other filesystems are mounted (e.g. in single user mode). It
|
|
may also contain commands which are used indirectly by scripts.
|
|
^[1]
|
|
|
|
3.4.2. Requirements
|
|
|
|
There must be no subdirectories in /bin.
|
|
|
|
The following commands, or symbolic links to commands, are
|
|
required in /bin:
|
|
Command Description
|
|
cat Utility to concatenate files to standard output
|
|
chgrp Utility to change file group ownership
|
|
chmod Utility to change file access permissions
|
|
chown Utility to change file owner and group
|
|
cp Utility to copy files and directories
|
|
date Utility to print or set the system data and time
|
|
dd Utility to convert and copy a file
|
|
df Utility to report filesystem disk space usage
|
|
dmesg Utility to print or control the kernel message buffer
|
|
echo Utility to display a line of text
|
|
false Utility to do nothing, unsuccessfully
|
|
hostname Utility to show or set the system's host name
|
|
kill Utility to send signals to processes
|
|
ln Utility to make links between files
|
|
login Utility to begin a session on the system
|
|
ls Utility to list directory contents
|
|
mkdir Utility to make directories
|
|
mknod Utility to make block or character special files
|
|
more Utility to page through text
|
|
mount Utility to mount a filesystem
|
|
mv Utility to move/rename files
|
|
ps Utility to report process status
|
|
pwd Utility to print name of current working directory
|
|
rm Utility to remove files or directories
|
|
rmdir Utility to remove empty directories
|
|
sed The `sed' stream editor
|
|
sh POSIX compatible command shell
|
|
stty Utility to change and print terminal line settings
|
|
su Utility to change user ID
|
|
sync Utility to flush filesystem buffers
|
|
true Utility to do nothing, successfully
|
|
umount Utility to unmount file systems
|
|
uname Utility to print system information
|
|
|
|
If /bin/sh is not the POSIX compatible shell command itself, it
|
|
must be a hard or symbolic link to the real shell command.
|
|
|
|
The [ and test commands must be placed together in either /bin
|
|
or /usr/bin.
|
|
|
|
Rationale
|
|
|
|
Various shells behave differently when called as sh, so as to
|
|
preserve POSIX compatibility while allowing changes or
|
|
extensions to POSIX when desired.
|
|
|
|
The requirement for the [ and test commands to be included as
|
|
binaries (even if implemented internally by the shell) is
|
|
shared with the POSIX.1-2008 standard.
|
|
|
|
3.4.3. Specific Options
|
|
|
|
The following programs, or symbolic links to programs, must be
|
|
in /bin if the corresponding subsystem is installed:
|
|
Command Description
|
|
csh The C shell (optional)
|
|
ed The `ed' editor (optional)
|
|
tar The tar archiving utility (optional)
|
|
cpio The cpio archiving utility (optional)
|
|
gzip The GNU compression utility (optional)
|
|
gunzip The GNU uncompression utility (optional)
|
|
zcat The GNU uncompression utility (optional)
|
|
netstat The network statistics utility (optional)
|
|
ping The ICMP network test utility (optional)
|
|
|
|
/bin/csh may be a symbolic link to /bin/tcsh or /usr/bin/tcsh.
|
|
|
|
Rationale
|
|
|
|
The tar, gzip and cpio commands have been added to make
|
|
restoration of a system possible (provided that / is intact).
|
|
|
|
Conversely, if no restoration from the root partition is ever
|
|
expected, then these binaries might be omitted (e.g., a ROM
|
|
chip root, mounting /usr through NFS). If restoration of a
|
|
system is planned through the network, then ftp or tftp (along
|
|
with everything necessary to get an ftp connection) must be
|
|
available on the root partition.
|
|
|
|
3.5. /boot : Static files of the boot loader
|
|
|
|
3.5.1. Purpose
|
|
|
|
This directory contains everything required for the boot
|
|
process except configuration files not needed at boot time and
|
|
the map installer. Thus /boot stores data that is used before
|
|
the kernel begins executing user-mode programs. This may
|
|
include saved master boot sectors and sector map files.
|
|
|
|
Programs necessary to arrange for the boot loader to be able to
|
|
boot a file must be placed in /sbin. Configuration files for
|
|
boot loaders that are not required at boot time must be placed
|
|
in /etc.
|
|
|
|
3.5.2. Specific Options
|
|
|
|
The operating system kernel must be located in either / or
|
|
/boot.
|
|
|
|
Certain architectures may have other requirements for /boot
|
|
related to limitations or expectations specific to that
|
|
architecture. These requirements are not enumerated here;
|
|
distributions are allowed to add requirements as needed to
|
|
enable system startup on these architectures.
|
|
|
|
3.6. /dev : Device files
|
|
|
|
3.6.1. Purpose
|
|
|
|
The /dev directory is the location of special or device files.
|
|
|
|
3.6.2. Specific Options
|
|
|
|
If it is possible that devices in /dev will need to be manually
|
|
created, /dev must contain a command named MAKEDEV, which can
|
|
create devices as needed. It may also contain a MAKEDEV.local
|
|
for any local devices.
|
|
|
|
If required, MAKEDEV must have provisions for creating any
|
|
device that may be found on the system, not just those that a
|
|
particular distribution installs.
|
|
|
|
3.7. /etc : Host-specific system configuration
|
|
|
|
3.7.1. Purpose
|
|
|
|
The /etc hierarchy contains configuration files. A
|
|
"configuration file" is a local file used to control the
|
|
operation of a program; it must be static and cannot be an
|
|
executable binary. ^[2]
|
|
|
|
It is recommended that files be stored in subdirectories of
|
|
/etc rather than directly in /etc.
|
|
|
|
3.7.2. Requirements
|
|
|
|
No binaries may be located under /etc.
|
|
|
|
The following directories, or symbolic links to directories are
|
|
required in /etc:
|
|
Directory Description
|
|
opt Configuration for /opt
|
|
|
|
3.7.3. Specific Options
|
|
|
|
The following directories, or symbolic links to directories
|
|
must be in /etc, if the corresponding subsystem is installed:
|
|
Directory Description
|
|
X11 Configuration for the X Window system (optional)
|
|
sgml Configuration for SGML (optional)
|
|
xml Configuration for XML (optional)
|
|
|
|
The following files, or symbolic links to files, must be in
|
|
/etc if the corresponding subsystem is installed: ^[3]
|
|
File Description
|
|
csh.login Systemwide initialization file for C shell logins
|
|
(optional)
|
|
exports NFS filesystem access control list (optional)
|
|
fstab Static information about filesystems (optional)
|
|
ftpusers FTP daemon user access control list (optional)
|
|
gateways File which lists gateways for routed (optional)
|
|
gettydefs Speed and terminal settings used by getty (optional)
|
|
group User group file (optional)
|
|
host.conf Resolver configuration file (optional)
|
|
hosts Static information about host names (optional)
|
|
hosts.allow Host access file for TCP wrappers (optional)
|
|
hosts.deny Host access file for TCP wrappers (optional)
|
|
hosts.equiv List of trusted hosts for rlogin, rsh, rcp
|
|
(optional)
|
|
hosts.lpd List of trusted hosts for lpd (optional)
|
|
inetd.conf Configuration file for inetd (optional)
|
|
inittab Configuration file for init (optional)
|
|
issue Pre-login message and identification file (optional)
|
|
ld.so.conf List of extra directories to search for shared
|
|
libraries (optional)
|
|
motd Post-login message of the day file (optional)
|
|
mtab Dynamic information about filesystems (optional)
|
|
mtools.conf Configuration file for mtools (optional)
|
|
networks Static information about network names (optional)
|
|
passwd The password file (optional)
|
|
printcap The lpd printer capability database (optional)
|
|
profile Systemwide initialization file for sh shell logins
|
|
(optional)
|
|
protocols IP protocol listing (optional)
|
|
resolv.conf Resolver configuration file (optional)
|
|
rpc RPC protocol listing (optional)
|
|
securetty TTY access control for root login (optional)
|
|
services Port names for network services (optional)
|
|
shells Pathnames of valid login shells (optional)
|
|
syslog.conf Configuration file for syslogd (optional)
|
|
|
|
mtab does not fit the static nature of /etc: it is excepted for
|
|
historical reasons. ^[4]
|
|
|
|
3.7.4. /etc/opt : Configuration files for /opt
|
|
|
|
3.7.4.1. Purpose
|
|
|
|
Host-specific configuration files for add-on application
|
|
software packages must be installed within the directory
|
|
/etc/opt/<subdir>, where <subdir> is the name of the subtree in
|
|
/opt where the static data from that package is stored.
|
|
|
|
3.7.4.2. Requirements
|
|
|
|
No structure is imposed on the internal arrangement of
|
|
/etc/opt/<subdir>.
|
|
|
|
If a configuration file must reside in a different location in
|
|
order for the package or system to function properly, it may be
|
|
placed in a location other than /etc/opt/<subdir>.
|
|
|
|
Rationale
|
|
|
|
Refer to the rationale for /opt.
|
|
|
|
3.7.5. /etc/X11 : Configuration for the X Window System (optional)
|
|
|
|
3.7.5.1. Purpose
|
|
|
|
/etc/X11 is the location for all X11 host-specific
|
|
configuration. This directory is necessary to allow local
|
|
control if /usr is mounted read only.
|
|
|
|
3.7.5.2. Specific Options
|
|
|
|
The following files, or symbolic links to files, must be in
|
|
/etc/X11 if the corresponding subsystem is installed:
|
|
File Description
|
|
xorg.conf The configuration file for X.org versions 7 and later
|
|
(optional)
|
|
Xmodmap Global X11 keyboard modification file (optional)
|
|
|
|
Subdirectories of /etc/X11 may include those for xdm and for
|
|
any other programs (some window managers, for example) that
|
|
need them. ^[5]
|
|
|
|
3.7.6. /etc/sgml : Configuration files for SGML (optional)
|
|
|
|
3.7.6.1. Purpose
|
|
|
|
Generic configuration files defining high-level parameters of
|
|
the SGML systems are installed here. Files with names *.conf
|
|
indicate generic configuration files. File with names *.cat are
|
|
the DTD-specific centralized catalogs, containing references to
|
|
all other catalogs needed to use the given DTD. The super
|
|
catalog file catalog references all the centralized catalogs.
|
|
|
|
3.7.7. /etc/xml : Configuration files for XML (optional)
|
|
|
|
3.7.7.1. Purpose
|
|
|
|
Generic configuration files defining high-level parameters of
|
|
the XML systems are installed here. Files with names *.conf
|
|
indicate generic configuration files. The super catalog file
|
|
catalog references all the centralized catalogs.
|
|
|
|
3.8. /home : User home directories (optional)
|
|
|
|
3.8.1. Purpose
|
|
|
|
/home is a fairly standard concept, but it is clearly a
|
|
site-specific filesystem. ^[6] The setup will differ from host
|
|
to host. Therefore, no program should assume any specific
|
|
location for a home directory, rather it should query for it.
|
|
^[7]
|
|
|
|
3.8.2. Requirements
|
|
|
|
User specific configuration files for applications are stored
|
|
in the user's home directory in a file that starts with the '.'
|
|
character (a "dot file"). If an application needs to create
|
|
more than one dot file then they should be placed in a
|
|
subdirectory with a name starting with a '.' character, (a "dot
|
|
directory"). In this case the configuration files should not
|
|
start with the '.' character. ^[8]
|
|
|
|
3.8.3. Home Directory Specifications and Conventions
|
|
|
|
A number of efforts have been made in the past to standardize
|
|
the layout of home directories, including the XDG Base
|
|
Directories specification ^[9] and the GLib conventions on user
|
|
directory contents. ^[10] Additional efforts in this direction
|
|
are possible in the future. To accomodate software which makes
|
|
use of these specifications and conventions, distributions may
|
|
create directory hierarchies which follow the specifications
|
|
and conventions. Those directory hierarchies may be located
|
|
underneath home directories.
|
|
|
|
3.9. /lib : Essential shared libraries and kernel modules
|
|
|
|
3.9.1. Purpose
|
|
|
|
The /lib directory contains those shared library images needed
|
|
to boot the system and run the commands in the root filesystem,
|
|
ie. by binaries in /bin and /sbin. ^[11]
|
|
|
|
3.9.2. Requirements
|
|
|
|
At least one of each of the following filename patterns are
|
|
required (they may be files, or symbolic links):
|
|
File Description
|
|
libc.so.* The dynamically-linked C library (optional)
|
|
ld* The execution time linker/loader (optional)
|
|
|
|
If a C preprocessor is installed, /lib/cpp must be a reference
|
|
to it, for historical reasons. ^[12]
|
|
|
|
3.9.3. Specific Options
|
|
|
|
The following directories, or symbolic links to directories,
|
|
must be in /lib, if the corresponding subsystem is installed:
|
|
Directory Description
|
|
modules Loadable kernel modules (optional)
|
|
|
|
3.10. /lib<qual> : Alternate format essential shared libraries
|
|
(optional)
|
|
|
|
3.10.1. Purpose
|
|
|
|
There may be one or more variants of the /lib directory on
|
|
systems which support more than one binary format requiring
|
|
separate libraries. ^[13]
|
|
|
|
3.10.2. Requirements
|
|
|
|
If one or more of these directories exist, the requirements for
|
|
their contents are the same as the normal /lib directory,
|
|
except that /lib<qual>/cpp is not required. ^[14]
|
|
|
|
3.11. /media : Mount point for removable media
|
|
|
|
3.11.1. Purpose
|
|
|
|
This directory contains subdirectories which are used as mount
|
|
points for removable media such as floppy disks, cdroms and zip
|
|
disks.
|
|
|
|
Rationale
|
|
|
|
Historically there have been a number of other different places
|
|
used to mount removable media such as /cdrom, /mnt or
|
|
/mnt/cdrom. Placing the mount points for all removable media
|
|
directly in the root directory would potentially result in a
|
|
large number of extra directories in /. Although the use of
|
|
subdirectories in /mnt as a mount point has recently been
|
|
common, it conflicts with a much older tradition of using /mnt
|
|
directly as a temporary mount point.
|
|
|
|
3.11.2. Specific Options
|
|
|
|
The following directories, or symbolic links to directories,
|
|
must be in /media, if the corresponding subsystem is installed:
|
|
Directory Description
|
|
floppy Floppy drive (optional)
|
|
cdrom CD-ROM drive (optional)
|
|
cdrecorder CD writer (optional)
|
|
zip Zip drive (optional)
|
|
|
|
On systems where more than one device exists for mounting a
|
|
certain type of media, mount directories can be created by
|
|
appending a digit to the name of those available above starting
|
|
with '0', but the unqualified name must also exist. ^[15]
|
|
|
|
3.12. /mnt : Mount point for a temporarily mounted filesystem
|
|
|
|
3.12.1. Purpose
|
|
|
|
This directory is provided so that the system administrator may
|
|
temporarily mount a filesystem as needed. The content of this
|
|
directory is a local issue and should not affect the manner in
|
|
which any program is run.
|
|
|
|
This directory must not be used by installation programs: a
|
|
suitable temporary directory not in use by the system must be
|
|
used instead.
|
|
|
|
3.13. /opt : Add-on application software packages
|
|
|
|
3.13.1. Purpose
|
|
|
|
/opt is reserved for the installation of add-on application
|
|
software packages.
|
|
|
|
A package to be installed in /opt must locate its static files
|
|
in a separate /opt/<package> or /opt/<provider> directory tree,
|
|
where <package> is a name that describes the software package
|
|
and <provider> is the provider's LANANA registered name.
|
|
|
|
3.13.2. Requirements
|
|
|
|
Directory Description
|
|
<package> Static package objects
|
|
<provider> LANANA registered provider name
|
|
|
|
The directories /opt/bin, /opt/doc, /opt/include, /opt/info,
|
|
/opt/lib, and /opt/man are reserved for local system
|
|
administrator use. Packages may provide "front-end" files
|
|
intended to be placed in (by linking or copying) these reserved
|
|
directories by the local system administrator, but must
|
|
function normally in the absence of these reserved directories.
|
|
|
|
Programs to be invoked by users must be located in the
|
|
directory /opt/<package>/bin or under the /opt/<provider>
|
|
hierarchy. If the package includes UNIX manual pages, they must
|
|
be located in /opt/<package>/share/man or under the
|
|
/opt/<provider> hierarchy, and the same substructure as
|
|
/usr/share/man must be used.
|
|
|
|
Package files that are variable (change in normal operation)
|
|
must be installed in /var/opt. See the section on /var/opt for
|
|
more information.
|
|
|
|
Host-specific configuration files must be installed in
|
|
/etc/opt. See the section on /etc for more information.
|
|
|
|
No other package files may exist outside the /opt, /var/opt,
|
|
and /etc/opt hierarchies except for those package files that
|
|
must reside in specific locations within the filesystem tree in
|
|
order to function properly. For example, device lock files must
|
|
be placed in /var/lock and devices must be located in /dev.
|
|
|
|
Distributions may install and otherwise manage software in /opt
|
|
under an appropriately registered subdirectory.
|
|
|
|
Rationale
|
|
|
|
The use of /opt for add-on software is a well-established
|
|
practice in the UNIX community. The System V Application Binary
|
|
Interface [AT&T 1990], based on the System V Interface
|
|
Definition (Third Edition), provides for an /opt structure very
|
|
similar to the one defined here.
|
|
|
|
The Intel Binary Compatibility Standard v. 2 (iBCS2) also
|
|
provides a similar structure for /opt.
|
|
|
|
Generally, all data required to support a package on a system
|
|
must be present within /opt/<package>, including files intended
|
|
to be copied into /etc/opt/<package> and /var/opt/<package> as
|
|
well as reserved directories in /opt.
|
|
|
|
The minor restrictions on distributions using /opt are
|
|
necessary because conflicts are possible between
|
|
distribution-installed and locally-installed software,
|
|
especially in the case of fixed pathnames found in some binary
|
|
software.
|
|
|
|
The structure of the directories below /opt/<provider> is left
|
|
up to the packager of the software, though it is recommended
|
|
that packages are installed in /opt/<provider>/<package> and
|
|
follow a similar structure to the guidelines for
|
|
/opt/<package>. A valid reason for diverging from this
|
|
structure is for support packages which may have files
|
|
installed in /opt/<provider>/lib or /opt/<provider>/bin.
|
|
|
|
3.14. /root : Home directory for the root user (optional)
|
|
|
|
3.14.1. Purpose
|
|
|
|
The root account's home directory may be determined by
|
|
developer or local preference, but this is the recommended
|
|
default location. ^[16]
|
|
|
|
3.15. /run : Run-time variable data
|
|
|
|
3.15.1. Purpose
|
|
|
|
This directory contains system information data describing the
|
|
system since it was booted. Files under this directory must be
|
|
cleared (removed or truncated as appropriate) at the beginning
|
|
of the boot process.
|
|
|
|
The purposes of this directory were once served by /var/run. In
|
|
general, programs may continue to use /var/run to fulfill the
|
|
requirements set out for /run for the purposes of backwards
|
|
compatibility. Programs which have migrated to use /run should
|
|
cease their usage of /var/run, except as noted in the section
|
|
on /var/run.
|
|
|
|
Programs may have a subdirectory of /run; this is encouraged
|
|
for programs that use more than one run-time file. Users may
|
|
also have a subdirectory of /run, although care must be taken
|
|
to appropriately limit access rights to prevent unauthorized
|
|
use of /run itself and other subdirectories. ^[17]
|
|
|
|
3.15.2. Requirements
|
|
|
|
Process identifier (PID) files, which were originally placed in
|
|
/etc, must be placed in /run. The naming convention for PID
|
|
files is <program-name>.pid. For example, the crond PID file is
|
|
named /run/crond.pid.
|
|
|
|
The internal format of PID files remains unchanged. The file
|
|
must consist of the process identifier in ASCII-encoded
|
|
decimal, followed by a newline character. For example, if crond
|
|
was process number 25, /run/crond.pid would contain three
|
|
characters: two, five, and newline.
|
|
|
|
Programs that read PID files should be somewhat flexible in
|
|
what they accept; i.e., they should ignore extra whitespace,
|
|
leading zeroes, absence of the trailing newline, or additional
|
|
lines in the PID file. Programs that create PID files should
|
|
use the simple specification located in the above paragraph.
|
|
|
|
System programs that maintain transient UNIX-domain sockets
|
|
must place them in this directory or an appropriate
|
|
subdirectory as outlined above.
|
|
|
|
3.16. /sbin : System binaries
|
|
|
|
3.16.1. Purpose
|
|
|
|
Utilities used for system administration (and other root-only
|
|
commands) are stored in /sbin, /usr/sbin, and /usr/local/sbin.
|
|
/sbin contains binaries essential for booting, restoring,
|
|
recovering, and/or repairing the system in addition to the
|
|
binaries in /bin. ^[18] Programs executed after /usr is known
|
|
to be mounted (when there are no problems) are generally placed
|
|
into /usr/sbin. Locally-installed system administration
|
|
programs should be placed into /usr/local/sbin. ^[19]
|
|
|
|
3.16.2. Requirements
|
|
|
|
There must be no subdirectories in /sbin.
|
|
|
|
The following commands, or symbolic links to commands, are
|
|
required in /sbin:
|
|
Command Description
|
|
shutdown Command to bring the system down.
|
|
|
|
3.16.3. Specific Options
|
|
|
|
The following files, or symbolic links to files, must be in
|
|
/sbin if the corresponding subsystem is installed:
|
|
Command Description
|
|
fastboot Reboot the system without checking the disks
|
|
(optional)
|
|
fasthalt Stop the system without checking the disks (optional)
|
|
fdisk Partition table manipulator (optional)
|
|
fsck File system check and repair utility (optional)
|
|
fsck.* File system check and repair utility for a specific
|
|
filesystem (optional)
|
|
getty The getty program (optional)
|
|
halt Command to stop the system (optional)
|
|
ifconfig Configure a network interface (optional)
|
|
init Initial process (optional)
|
|
mkfs Command to build a filesystem (optional)
|
|
mkfs.* Command to build a specific filesystem (optional)
|
|
mkswap Command to set up a swap area (optional)
|
|
reboot Command to reboot the system (optional)
|
|
route IP routing table utility (optional)
|
|
swapon Enable paging and swapping (optional)
|
|
swapoff Disable paging and swapping (optional)
|
|
update Daemon to periodically flush filesystem buffers
|
|
(optional)
|
|
|
|
3.17. /srv : Data for services provided by this system
|
|
|
|
3.17.1. Purpose
|
|
|
|
/srv contains site-specific data which is served by this
|
|
system.
|
|
|
|
Rationale
|
|
|
|
This main purpose of specifying this is so that users may find
|
|
the location of the data files for a particular service, and so
|
|
that services which require a single tree for readonly data,
|
|
writable data and scripts (such as cgi scripts) can be
|
|
reasonably placed. Data that is only of interest to a specific
|
|
user should go in that users' home directory. If the directory
|
|
and file structure of the data is not exposed to consumers, it
|
|
should go in /var/lib.
|
|
|
|
The methodology used to name subdirectories of /srv is
|
|
unspecified as there is currently no consensus on how this
|
|
should be done. One method for structuring data under /srv is
|
|
by protocol, eg. ftp, rsync, www, and cvs. On large systems it
|
|
can be useful to structure /srv by administrative context, such
|
|
as /srv/physics/www, /srv/compsci/cvs, etc. This setup will
|
|
differ from host to host. Therefore, no program should rely on
|
|
a specific subdirectory structure of /srv existing or data
|
|
necessarily being stored in /srv. However /srv should always
|
|
exist on FHS compliant systems and should be used as the
|
|
default location for such data.
|
|
|
|
Distributions must take care not to remove locally placed files
|
|
in these directories without administrator permission. ^[20]
|
|
|
|
3.18. /tmp : Temporary files
|
|
|
|
3.18.1. Purpose
|
|
|
|
The /tmp directory must be made available for programs that
|
|
require temporary files.
|
|
|
|
Programs must not assume that any files or directories in /tmp
|
|
are preserved between invocations of the program.
|
|
|
|
Rationale
|
|
|
|
IEEE standard POSIX.1-2008 lists requirements similar to the
|
|
above section.
|
|
|
|
Although data stored in /tmp may be deleted in a site-specific
|
|
manner, it is recommended that files and directories located in
|
|
/tmp be deleted whenever the system is booted.
|
|
|
|
FHS added this recommendation on the basis of historical
|
|
precedent and common practice, but did not make it a
|
|
requirement because system administration is not within the
|
|
scope of this standard.
|
|
__________________________________________________________
|
|
|
|
^[1] Command binaries that are not essential enough to place
|
|
into /bin must be placed in /usr/bin, instead. Items that are
|
|
required only by non-root users (the X Window System, chsh,
|
|
etc.) are generally not essential enough to be placed into the
|
|
root partition.
|
|
|
|
^[2] To be clear, /etc may contain executable scripts, such as
|
|
the command scripts commonly called by init to start and shut
|
|
down the system and start daemon processes. "Executable binary"
|
|
in this context refers to direct machine code or pseudocode not
|
|
in a human-readable format, such as native ELF executables.
|
|
|
|
^[3] Systems that use the shadow password suite will have
|
|
additional configuration files in /etc (/etc/shadow and others)
|
|
and programs in /usr/sbin (useradd, usermod, and others).
|
|
|
|
^[4] On some Linux systems, this may be a symbolic link to
|
|
/proc/mounts, in which case this exception is not required.
|
|
|
|
^[5] /etc/X11/xdm holds the configuration files for xdm. These
|
|
are most of the files previously found in /usr/lib/X11/xdm.
|
|
Some local variable data for xdm is stored in /var/lib/xdm.
|
|
|
|
^[6] Different people prefer to place user accounts in a
|
|
variety of places. This section describes only a suggested
|
|
placement for user home directories; nevertheless we recommend
|
|
that all FHS-compliant distributions use this as the default
|
|
location for user home directories. Non-login accounts created
|
|
for administrative purposes often have their home directories
|
|
elsewhere.
|
|
|
|
On smaller systems, each user's home directory is typically
|
|
implemented as a subdirectory directly under /home, for example
|
|
/home/smith, /home/torvalds, /home/operator, etc. On large
|
|
systems (especially when the /home directories are shared
|
|
amongst many hosts using NFS) it is useful to subdivide user
|
|
home directories. Subdivision may be accomplished by using
|
|
subdirectories such as /home/staff, /home/guests,
|
|
/home/students, etc.
|
|
|
|
^[7] To find a user's home directory, use a library function
|
|
such as getpwent, getpwent_r of fgetpwent rather than relying
|
|
on /etc/passwd because user information may be stored remotely
|
|
using systems such as NIS.
|
|
|
|
^[8] It is recommended that, apart from autosave and lock
|
|
files, programs should refrain from creating non dot files or
|
|
directories in a home directory without user consent.
|
|
|
|
^[9] Found at
|
|
http://standards.freedesktop.org/basedir-spec/basedir-spec-late
|
|
st.html and
|
|
http://www.freedesktop.org/wiki/Software/xdg-user-dirs.
|
|
|
|
^[10] A description of GLib's conventions can be found in the
|
|
documentation for GUserDirectory, at
|
|
http://developer.gnome.org/glib/unstable/glib-Miscellaneous-Uti
|
|
lity-Functions.html#GUserDirectory.
|
|
|
|
^[11] Shared libraries that are only necessary for binaries in
|
|
/usr (such as any X Window binaries) must not be in /lib. Only
|
|
the shared libraries required to run binaries in /bin and /sbin
|
|
may be here. In particular, the library libm.so.* may also be
|
|
placed in /usr/lib if it is not required by anything in /bin or
|
|
/sbin.
|
|
|
|
^[12] The usual placement of this binary is /usr/bin/cpp.
|
|
|
|
^[13] This is commonly used for 64-bit or 32-bit support on
|
|
systems which support multiple binary formats, but require
|
|
libraries of the same name. In this case, /lib32 and /lib64
|
|
might be the library directories, and /lib a symlink to one of
|
|
them.
|
|
|
|
^[14] /lib<qual>/cpp is still permitted: this allows the case
|
|
where /lib and /lib<qual> are the same (one is a symbolic link
|
|
to the other).
|
|
|
|
^[15] A compliant distribution with two CDROM drives might have
|
|
/media/cdrom0 and /media/cdrom1 with /media/cdrom a symlink to
|
|
either of these.
|
|
|
|
^[16] If the home directory of the root account is not stored
|
|
on the root partition it will be necessary to make certain it
|
|
will default to / if it cannot be located.
|
|
|
|
We recommend against using the root account for tasks that can
|
|
be performed as an unprivileged user, and that it be used
|
|
solely for system administration. For this reason, we recommend
|
|
that subdirectories for mail and other applications not appear
|
|
in the root account's home directory, and that mail for
|
|
administration roles such as root, postmaster, and webmaster be
|
|
forwarded to an appropriate user.
|
|
|
|
^[17] /run should not be writable for unprivileged users; it is
|
|
a major security problem if any user can write in this
|
|
directory. User-specific subdirectories should be writable only
|
|
by each directory's owner.
|
|
|
|
^[18] Originally, /sbin binaries were kept in /etc.
|
|
|
|
^[19] Deciding what things go into "sbin" directories is
|
|
simple: if a normal (not a system administrator) user will ever
|
|
run it directly, then it must be placed in one of the "bin"
|
|
directories. Ordinary users should not have to place any of the
|
|
sbin directories in their path.
|
|
|
|
For example, files such as chfn which users only occasionally
|
|
use must still be placed in /usr/bin. ping, although it is
|
|
absolutely necessary for root (network recovery and diagnosis)
|
|
is often used by users and must live in /bin for that reason.
|
|
|
|
We recommend that users have read and execute permission for
|
|
everything in /sbin except, perhaps, certain setuid and setgid
|
|
programs. The division between /bin and /sbin was not created
|
|
for security reasons or to prevent users from seeing the
|
|
operating system, but to provide a good partition between
|
|
binaries that everyone uses and ones that are primarily used
|
|
for administration tasks. There is no inherent security
|
|
advantage in making /sbin off-limits for users.
|
|
|
|
^[20] This is particularly important as these areas will often
|
|
contain both files initially installed by the distributor, and
|
|
those added by the administrator.
|
|
|
|
Chapter 4. The /usr Hierarchy
|
|
|
|
Table of Contents
|
|
|
|
4.1. Purpose
|
|
4.2. Requirements
|
|
4.3. Specific Options
|
|
4.4. /usr/bin : Most user commands
|
|
|
|
4.4.1. Purpose
|
|
4.4.2. Requirements
|
|
4.4.3. Specific Options
|
|
|
|
4.5. /usr/include : Directory for standard include files.
|
|
|
|
4.5.1. Purpose
|
|
4.5.2. Specific Options
|
|
|
|
4.6. /usr/lib : Libraries for programming and packages
|
|
|
|
4.6.1. Purpose
|
|
4.6.2. Specific Options
|
|
|
|
4.7. /usr/libexec : Binaries run by other programs (optional)
|
|
|
|
4.7.1. Purpose
|
|
|
|
4.8. /usr/lib<qual> : Alternate format libraries (optional)
|
|
|
|
4.8.1. Purpose
|
|
|
|
4.9. /usr/local : Local hierarchy
|
|
|
|
4.9.1. Purpose
|
|
4.9.2. Requirements
|
|
4.9.3. Specific Options
|
|
4.9.4. /usr/local/share : Local architecture-independent
|
|
hierarchy
|
|
|
|
4.10. /usr/sbin : Non-essential standard system binaries
|
|
|
|
4.10.1. Purpose
|
|
4.10.2. Requirements
|
|
|
|
4.11. /usr/share : Architecture-independent data
|
|
|
|
4.11.1. Purpose
|
|
4.11.2. Requirements
|
|
4.11.3. Specific Options
|
|
4.11.4. /usr/share/color : Color management information
|
|
(optional)
|
|
|
|
4.11.5. /usr/share/dict : Word lists (optional)
|
|
4.11.6. /usr/share/man : Manual pages
|
|
4.11.7. /usr/share/misc : Miscellaneous
|
|
architecture-independent data
|
|
|
|
4.11.8. /usr/share/ppd : Printer definitions (optional)
|
|
4.11.9. /usr/share/sgml : SGML data (optional)
|
|
4.11.10. /usr/share/xml : XML data (optional)
|
|
|
|
4.12. /usr/src : Source code (optional)
|
|
|
|
4.12.1. Purpose
|
|
|
|
4.1. Purpose
|
|
|
|
/usr is the second major section of the filesystem. /usr is
|
|
shareable, read-only data. That means that /usr should be
|
|
shareable between various FHS-compliant hosts and must not be
|
|
written to. Any information that is host-specific or varies
|
|
with time is stored elsewhere.
|
|
|
|
Large software packages must not use a direct subdirectory
|
|
under the /usr hierarchy.
|
|
|
|
4.2. Requirements
|
|
|
|
The following directories, or symbolic links to directories,
|
|
are required in /usr.
|
|
Directory Description
|
|
bin Most user commands
|
|
lib Libraries
|
|
local Local hierarchy (empty after main installation)
|
|
sbin Non-vital system binaries
|
|
share Architecture-independent data
|
|
|
|
4.3. Specific Options
|
|
|
|
Directory Description
|
|
games Games and educational binaries (optional)
|
|
include Header files included by C programs
|
|
libexec Binaries run by other programs (optional)
|
|
lib<qual> Alternate Format Libraries (optional)
|
|
src Source code (optional)
|
|
|
|
An exception is made for the X Window System because of
|
|
considerable precedent and widely-accepted practice.
|
|
|
|
The following symbolic links to directories may be present.
|
|
This possibility is based on the need to preserve compatibility
|
|
with older systems until all distribution can be assumed to use
|
|
the /var hierarchy.
|
|
/usr/spool -> /var/spool
|
|
/usr/tmp -> /var/tmp
|
|
/usr/spool/locks -> /var/lock
|
|
|
|
Once a system no longer requires any one of the above symbolic
|
|
links, the link may be removed, if desired.
|
|
|
|
4.4. /usr/bin : Most user commands
|
|
|
|
4.4.1. Purpose
|
|
|
|
This is the primary directory of executable commands on the
|
|
system.
|
|
|
|
4.4.2. Requirements
|
|
|
|
There must be no subdirectories in /usr/bin.
|
|
|
|
4.4.3. Specific Options
|
|
|
|
The following files, or symbolic links to files, must be in
|
|
/usr/bin, if the corresponding subsystem is installed:
|
|
Command Description
|
|
perl The Practical Extraction and Report Language (optional)
|
|
python The Python interpreted language (optional)
|
|
tclsh Simple shell containing Tcl interpreter (optional)
|
|
wish Simple Tcl/Tk windowing shell (optional)
|
|
expect Program for interactive dialog (optional)
|
|
|
|
Rationale
|
|
|
|
In many executable scripts, the interpreter to be invoked to
|
|
execute the script is specified using #!path_to_interpreter on
|
|
the first line of a script. To make such scripts portable among
|
|
different systems, it is advantageous to standardize the
|
|
interpreter locations. The shell interpreter is already fixed
|
|
in /bin by this specification, but interpreters for Perl,
|
|
Python, Tcl and expect may be installed in various places. The
|
|
locations specified here may be implemented as symbolic links
|
|
to the physical location of the interpreters.
|
|
|
|
4.5. /usr/include : Directory for standard include files.
|
|
|
|
4.5.1. Purpose
|
|
|
|
This is where all of the system's general-use include files for
|
|
the C programming language should be placed.
|
|
|
|
4.5.2. Specific Options
|
|
|
|
The following directories, or symbolic links to directories,
|
|
must be in /usr/include, if the corresponding subsystem is
|
|
installed:
|
|
Directory Description
|
|
bsd BSD compatibility include files (optional)
|
|
|
|
4.6. /usr/lib : Libraries for programming and packages
|
|
|
|
4.6.1. Purpose
|
|
|
|
/usr/lib includes object files and libraries. ^[21] On some
|
|
systems, it may also include internal binaries that are not
|
|
intended to be executed directly by users or shell scripts.
|
|
^[22]
|
|
|
|
Applications may use a single subdirectory under /usr/lib. If
|
|
an application uses a subdirectory, all architecture-dependent
|
|
data exclusively used by the application must be placed within
|
|
that subdirectory. ^[23]
|
|
|
|
4.6.2. Specific Options
|
|
|
|
For historical reasons, /usr/lib/sendmail must be a symbolic
|
|
link which resolves to the sendmail-compatible command provided
|
|
by the system's mail transfer agent, if the latter exists.
|
|
^[24] ^[25]
|
|
|
|
4.7. /usr/libexec : Binaries run by other programs (optional)
|
|
|
|
4.7.1. Purpose
|
|
|
|
/usr/libexec includes internal binaries that are not intended
|
|
to be executed directly by users or shell scripts. Applications
|
|
may use a single subdirectory under /usr/libexec.
|
|
|
|
Applications which use /usr/libexec in this way must not also
|
|
use /usr/lib to store internal binaries, though they may use
|
|
/usr/lib for the other purposes documented here.
|
|
|
|
Rationale
|
|
|
|
Some previous versions of this document did not support
|
|
/usr/libexec, despite it being standard practice in a number of
|
|
environments. ^[26] To accomodate this restriction, it became
|
|
common practice to use /usr/lib instead. Either practice is now
|
|
acceptable, but each application must choose one way or the
|
|
other to organize itself.
|
|
|
|
4.8. /usr/lib<qual> : Alternate format libraries (optional)
|
|
|
|
4.8.1. Purpose
|
|
|
|
/usr/lib<qual> performs the same role as /usr/lib for an
|
|
alternate binary format, except that the symbolic links
|
|
/usr/lib<qual>/sendmail and /usr/lib<qual>/X11 are not
|
|
required. ^[27]
|
|
|
|
4.9. /usr/local : Local hierarchy
|
|
|
|
4.9.1. Purpose
|
|
|
|
The /usr/local hierarchy is for use by the system administrator
|
|
when installing software locally. It needs to be safe from
|
|
being overwritten when the system software is updated. It may
|
|
be used for programs and data that are shareable amongst a
|
|
group of hosts, but not found in /usr.
|
|
|
|
Locally installed software must be placed within /usr/local
|
|
rather than /usr unless it is being installed to replace or
|
|
upgrade software in /usr. ^[28]
|
|
|
|
4.9.2. Requirements
|
|
|
|
The following directories, or symbolic links to directories,
|
|
must be in /usr/local
|
|
Directory Description
|
|
bin Local binaries
|
|
etc Host-specific system configuration for local binaries
|
|
games Local game binaries
|
|
include Local C header files
|
|
lib Local libraries
|
|
man Local online manuals
|
|
sbin Local system binaries
|
|
share Local architecture-independent hierarchy
|
|
src Local source code
|
|
|
|
No other directories, except those listed below, may be in
|
|
/usr/local after first installing a FHS-compliant system.
|
|
|
|
4.9.3. Specific Options
|
|
|
|
If directories /lib<qual> or /usr/lib<qual> exist, the
|
|
equivalent directories must also exist in /usr/local.
|
|
|
|
/usr/local/etc may be a symbolic link to /etc/local.
|
|
|
|
Rationale
|
|
|
|
The consistency of /usr/local/etc is beneficial to installers,
|
|
and is already used in other systems. As all of /usr/local
|
|
needs to be backed up to reproduce a system, it introduces no
|
|
additional maintenance overhead, but a symlink to /etc/local is
|
|
suitable if systems want all their configuration under one
|
|
hierarchy.
|
|
|
|
Note that /usr/etc is still not allowed: programs in /usr
|
|
should place configuration files in /etc.
|
|
|
|
If the directory /usr/share/color exists as specified in this
|
|
document, then the directory /usr/local/share/color must also
|
|
exist, governed by the same rules as /usr/share/color.
|
|
|
|
Rationale
|
|
|
|
This usage allows the sysadmin a place to install color
|
|
profiles manually when necessary.
|
|
|
|
4.9.4. /usr/local/share : Local architecture-independent hierarchy
|
|
|
|
The requirements for the contents of this directory are the
|
|
same as for /usr/share.
|
|
|
|
4.10. /usr/sbin : Non-essential standard system binaries
|
|
|
|
4.10.1. Purpose
|
|
|
|
This directory contains any non-essential binaries used
|
|
exclusively by the system administrator. System administration
|
|
programs that are required for system repair, system recovery,
|
|
mounting /usr, or other essential functions must be placed in
|
|
/sbin instead. ^[29]
|
|
|
|
4.10.2. Requirements
|
|
|
|
There must be no subdirectories in /usr/sbin.
|
|
|
|
4.11. /usr/share : Architecture-independent data
|
|
|
|
4.11.1. Purpose
|
|
|
|
The /usr/share hierarchy is for all read-only architecture
|
|
independent data files. ^[30]
|
|
|
|
This hierarchy is intended to be shareable among all
|
|
architecture platforms of a given OS; thus, for example, a site
|
|
with i386, Alpha, and PPC platforms might maintain a single
|
|
/usr/share directory that is centrally-mounted. Note, however,
|
|
that /usr/share is generally not intended to be shared by
|
|
different OSes or by different releases of the same OS.
|
|
|
|
Any program or package which contains or requires data that
|
|
doesn't need to be modified should store that data in
|
|
/usr/share (or /usr/local/share, if installed locally). It is
|
|
recommended that a subdirectory be used in /usr/share for this
|
|
purpose. Applications using a single file may use
|
|
/usr/share/misc.
|
|
|
|
Game data stored in /usr/share/games must be purely static
|
|
data. Any modifiable files, such as score files, game play
|
|
logs, and so forth, should be placed in /var/games.
|
|
|
|
4.11.2. Requirements
|
|
|
|
The following directories, or symbolic links to directories,
|
|
must be in /usr/share
|
|
Directory Description
|
|
man Online manuals
|
|
misc Miscellaneous architecture-independent data
|
|
|
|
4.11.3. Specific Options
|
|
|
|
The following directories, or symbolic links to directories,
|
|
must be in /usr/share, if the corresponding subsystem is
|
|
installed:
|
|
Directory Description
|
|
color Color management information (optional)
|
|
dict Word lists (optional)
|
|
doc Miscellaneous documentation (optional)
|
|
games Static data files for /usr/games (optional)
|
|
info Primary directory for GNU Info system (optional)
|
|
locale Locale information (optional)
|
|
nls Message catalogs for Native language support (optional)
|
|
ppd Printer definitions (optional)
|
|
sgml SGML data (optional)
|
|
terminfo Directories for terminfo database (optional)
|
|
tmac troff macros not distributed with groff (optional)
|
|
xml XML data (optional)
|
|
zoneinfo Timezone information and configuration (optional)
|
|
|
|
It is recommended that application-specific,
|
|
architecture-independent directories be placed here. Such
|
|
directories include groff, perl, ghostscript, texmf, and kbd
|
|
(Linux) or syscons (BSD). They may, however, be placed in
|
|
/usr/lib for backwards compatibility, at the distributor's
|
|
discretion. Similarly, a /usr/lib/games hierarchy may be used
|
|
in addition to the /usr/share/games hierarchy if the
|
|
distributor wishes to place some game data there.
|
|
|
|
4.11.4. /usr/share/color : Color management information (optional)
|
|
|
|
4.11.4.1. Purpose
|
|
|
|
This directory is the home for ICC color management files
|
|
installed by the system.
|
|
|
|
4.11.4.2. Specific Options
|
|
|
|
The following directories must be in /usr/share/color, if the
|
|
corresponding subsystem is installed:
|
|
Directory Description
|
|
icc ICC color profiles (optional)
|
|
|
|
The top-level directory /usr/share/color must not contain any
|
|
files; all files should be in subdirectories of
|
|
/usr/share/color.
|
|
|
|
4.11.5. /usr/share/dict : Word lists (optional)
|
|
|
|
4.11.5.1. Purpose
|
|
|
|
This directory is the home for word lists on the system;
|
|
Traditionally this directory contains only the English words
|
|
file, which is used by look(1) and various spelling programs.
|
|
words may use either American or British spelling.
|
|
|
|
Rationale
|
|
|
|
The reason that only word lists are located here is that they
|
|
are the only files common to all spell checkers.
|
|
|
|
4.11.5.2. Specific Options
|
|
|
|
The following files, or symbolic links to files, must be in
|
|
/usr/share/dict, if the corresponding subsystem is installed:
|
|
File Description
|
|
words List of English words (optional)
|
|
|
|
Sites that require both American and British spelling may link
|
|
words to /usr/share/dict/american-english or
|
|
/usr/share/dict/british-english.
|
|
|
|
Word lists for other languages may be added using the English
|
|
name for that language, e.g., /usr/share/dict/french,
|
|
/usr/share/dict/danish, etc. These should, if possible, use a
|
|
character set based on Unicode, with the UTF-8 character set
|
|
being the preferred option.
|
|
|
|
Other word lists must be included here, if present.
|
|
|
|
4.11.6. /usr/share/man : Manual pages
|
|
|
|
4.11.6.1. Purpose
|
|
|
|
This section details the organization for manual pages
|
|
throughout the system, including /usr/share/man. Also refer to
|
|
the section on /var/cache/man.
|
|
|
|
The primary <mandir> of the system is /usr/share/man.
|
|
/usr/share/man contains manual information for commands and
|
|
data under the / and /usr filesystems. ^[31]
|
|
|
|
Manual pages are stored in
|
|
<mandir>/<locale>/man<section>/<arch>. An explanation of
|
|
<mandir>, <locale>, <section>, and <arch> is given below.
|
|
|
|
A description of each section follows:
|
|
* man1: User programs Manual pages that describe publicly
|
|
accessible commands are contained in this chapter. Most
|
|
program documentation that a user will need to use is
|
|
located here.
|
|
* man2: System calls This section describes all of the system
|
|
calls (requests for the kernel to perform operations).
|
|
* man3: Library functions and subroutines Section 3 describes
|
|
program library routines that are not direct calls to
|
|
kernel services. This and chapter 2 are only really of
|
|
interest to programmers.
|
|
* man4: Special files Section 4 describes the special files,
|
|
related driver functions, and networking support available
|
|
in the system. Typically, this includes the device files
|
|
found in /dev and the kernel interface to networking
|
|
protocol support.
|
|
* man5: File formats The formats for many data files are
|
|
documented in the section 5. This includes various include
|
|
files, program output files, and system files.
|
|
* man6: Games This chapter documents games, demos, and
|
|
generally trivial programs. Different people have various
|
|
notions about how essential this is.
|
|
* man7: Miscellaneous Manual pages that are difficult to
|
|
classify are designated as being section 7. The troff and
|
|
other text processing macro packages are found here.
|
|
* man8: System administration Programs used by system
|
|
administrators for system operation and maintenance are
|
|
documented here. Some of these programs are also
|
|
occasionally useful for normal users.
|
|
|
|
4.11.6.2. Specific Options
|
|
|
|
The following directories, or symbolic links to directories,
|
|
must be in /usr/share/<mandir>/<locale>, unless they are empty:
|
|
^[32]
|
|
Directory Description
|
|
man1 User programs (optional)
|
|
man2 System calls (optional)
|
|
man3 Library calls (optional)
|
|
man4 Special files (optional)
|
|
man5 File formats (optional)
|
|
man6 Games (optional)
|
|
man7 Miscellaneous (optional)
|
|
man8 System administration (optional)
|
|
|
|
The component <section> describes the manual section.
|
|
|
|
Provisions must be made in the structure of /usr/share/man to
|
|
support manual pages which are written in different (or
|
|
multiple) languages. These provisions must take into account
|
|
the storage and reference of these manual pages. Relevant
|
|
factors include language (including geographical-based
|
|
differences), and character code set.
|
|
|
|
This naming of language subdirectories of /usr/share/man is
|
|
based on Appendix E of the POSIX 1003.1 standard which
|
|
describes the locale identification string — the most
|
|
well-accepted method to describe a cultural environment. The
|
|
<locale> string is:
|
|
|
|
<language>[_<territory>][.<character-set>][,<version>]
|
|
|
|
The <language> field must be taken from ISO 639 (a code for the
|
|
representation of names of languages). It must be two
|
|
characters wide and specified with lowercase letters only.
|
|
|
|
The <territory> field must be the two-letter code of ISO 3166
|
|
(a specification of representations of countries), if possible.
|
|
(Most people are familiar with the two-letter codes used for
|
|
the country codes in email addresses.) It must be two
|
|
characters wide and specified with uppercase letters only.
|
|
^[33]
|
|
|
|
The <character-set> field must represent the standard
|
|
describing the character set. If the <character-set> field is
|
|
just a numeric specification, the number represents the number
|
|
of the international standard describing the character set. It
|
|
is recommended that this be a numeric representation if
|
|
possible (ISO standards, especially), not include additional
|
|
punctuation symbols, and that any letters be in lowercase.
|
|
|
|
A parameter specifying a <version> of the profile may be placed
|
|
after the <character-set> field, delimited by a comma. This may
|
|
be used to discriminate between different cultural needs; for
|
|
instance, dictionary order versus a more systems-oriented
|
|
collating order. This standard recommends not using the
|
|
<version> field, unless it is necessary.
|
|
|
|
Systems which use a unique language and code set for all manual
|
|
pages may omit the <locale> substring and store all manual
|
|
pages in <mandir>. For example, systems which only have English
|
|
manual pages coded with ASCII, may store manual pages (the
|
|
man<section> directories) directly in /usr/share/man. (That is
|
|
the traditional circumstance and arrangement, in fact.)
|
|
|
|
Countries for which there is a well-accepted standard character
|
|
code set may omit the <character-set> field, but it is strongly
|
|
recommended that it be included, especially for countries with
|
|
several competing standards.
|
|
|
|
Various examples:
|
|
Language Territory Character Set Directory
|
|
English — ASCII /usr/share/man/en
|
|
English United Kingdom Unicode UTF-8 /usr/share/man/en_GB.10646
|
|
English United States ASCII /usr/share/man/en_US
|
|
French Canada ISO 8859-1 /usr/share/man/fr_CA.88591
|
|
French France ISO 8859-1 /usr/share/man/fr_FR.88591
|
|
German Germany ISO 646 /usr/share/man/de_DE.646
|
|
German Germany ISO 6937 /usr/share/man/de_DE.6937
|
|
German Germany ISO 8859-1 /usr/share/man/de_DE.88591
|
|
German Switzerland ISO 646 /usr/share/man/de_CH.646
|
|
Japanese Japan JIS /usr/share/man/ja_JP.jis
|
|
Japanese Japan SJIS /usr/share/man/ja_JP.sjis
|
|
Japanese Japan UJIS (or EUC-J) /usr/share/man/ja_JP.ujis
|
|
Japanese Japan Unicode UTF-16 /usr/share/man/ja_JP.10646
|
|
|
|
Similarly, provision must be made for manual pages which are
|
|
architecture-dependent, such as documentation on device-drivers
|
|
or low-level system administration commands. These must be
|
|
placed under an <arch> directory in the appropriate
|
|
man<section> directory; for example, a man page for the i386
|
|
ctrlaltdel(8) command might be placed in
|
|
/usr/share/man/<locale>/man8/i386/ctrlaltdel.8.
|
|
|
|
Manual pages for commands and data under /usr/local are stored
|
|
in /usr/local/man or /usr/local/share/man. All manual page
|
|
hierarchies in the system must have the same structure as
|
|
/usr/share/man, as this structure is expected by commands which
|
|
consume manual page content. ^[34]
|
|
|
|
The cat page sections (cat<section>) containing formatted
|
|
manual page entries are also found within subdirectories of
|
|
<mandir>/<locale>, but are not required nor may they be
|
|
distributed in lieu of nroff source manual pages.
|
|
|
|
The numbered sections "1" through "8" are traditionally
|
|
defined. In general, the file name for manual pages located
|
|
within a particular section end with .<section>.
|
|
|
|
In addition, some large sets of application-specific manual
|
|
pages have an additional suffix appended to the manual page
|
|
filename. For example, the MH mail handling system manual pages
|
|
must have mh appended to all MH manuals. All X Window System
|
|
manual pages must have an x appended to the filename.
|
|
|
|
The practice of placing various language manual pages in
|
|
appropriate subdirectories of /usr/share/man also applies to
|
|
the other manual page hierarchies, such as /usr/local/man.
|
|
(This portion of the standard also applies later in the section
|
|
on the optional /var/cache/man structure.)
|
|
|
|
4.11.7. /usr/share/misc : Miscellaneous architecture-independent data
|
|
|
|
This directory contains miscellaneous architecture-independent
|
|
files which don't require a separate subdirectory under
|
|
/usr/share.
|
|
|
|
4.11.7.1. Specific Options
|
|
|
|
The following files, or symbolic links to files, must be in
|
|
/usr/share/misc, if the corresponding subsystem is installed:
|
|
File Description
|
|
ascii ASCII character set table (optional)
|
|
termcap Terminal capability database (optional)
|
|
termcap.db Terminal capability database (optional)
|
|
|
|
Other (application-specific) files may appear here, but a
|
|
distributor may place them in /usr/lib at their discretion.
|
|
^[35] ^[36]
|
|
|
|
4.11.8. /usr/share/ppd : Printer definitions (optional)
|
|
|
|
4.11.8.1. Purpose
|
|
|
|
/usr/share/ppd contains PostScript Printer Definition (PPD)
|
|
files, which are used as descriptions of printer drivers by
|
|
many print systems. PPD files may be placed in this directory,
|
|
or in a subdirectory.
|
|
|
|
4.11.9. /usr/share/sgml : SGML data (optional)
|
|
|
|
4.11.9.1. Purpose
|
|
|
|
/usr/share/sgml contains architecture-independent files used by
|
|
SGML applications, such as ordinary catalogs (not the
|
|
centralized ones, see /etc/sgml), DTDs, entities, or style
|
|
sheets.
|
|
|
|
4.11.9.2. Specific Options
|
|
|
|
The following directories, or symbolic links to directories,
|
|
must be in /usr/share/sgml, if the corresponding subsystem is
|
|
installed:
|
|
Directory Description
|
|
docbook docbook DTD (optional)
|
|
tei tei DTD (optional)
|
|
html html DTD (optional)
|
|
mathml mathml DTD (optional)
|
|
|
|
Other files that are not specific to a given DTD may reside in
|
|
their own subdirectory.
|
|
|
|
4.11.10. /usr/share/xml : XML data (optional)
|
|
|
|
4.11.10.1. Purpose
|
|
|
|
/usr/share/xml contains architecture-independent files used by
|
|
XML applications, such as ordinary catalogs (not the
|
|
centralized ones, see /etc/sgml), DTDs, entities, or style
|
|
sheets.
|
|
|
|
4.11.10.2. Specific Options
|
|
|
|
The following directories, or symbolic links to directories,
|
|
must be in /usr/share/xml, if the corresponding subsystem is
|
|
installed:
|
|
Directory Description
|
|
docbook docbook XML DTD (optional)
|
|
xhtml XHTML DTD (optional)
|
|
mathml MathML DTD (optional)
|
|
|
|
4.12. /usr/src : Source code (optional)
|
|
|
|
4.12.1. Purpose
|
|
|
|
Source code may be placed in this subdirectory, only for
|
|
reference purposes. ^[37]
|
|
__________________________________________________________
|
|
|
|
^[21] Miscellaneous architecture-independent
|
|
application-specific static files and subdirectories must be
|
|
placed in /usr/share.
|
|
|
|
^[22] See below, in the /usr/libexec section, for a discussion
|
|
of /usr/lib vs. /usr/libexec for executable binaries.
|
|
|
|
^[23] For example, the perl5 subdirectory for Perl 5 modules
|
|
and libraries.
|
|
|
|
^[24] Some executable commands such as makewhatis and sendmail
|
|
have also been traditionally placed in /usr/lib. makewhatis is
|
|
an internal binary and must be placed in a binary directory;
|
|
users access only catman. Newer sendmail binaries are now
|
|
placed by default in /usr/sbin. Additionally, systems using a
|
|
sendmail-compatible mail transfer agent must provide
|
|
/usr/sbin/sendmail as the sendmail command, either as the
|
|
executable itself or as a symlink to the appropriate
|
|
executable.
|
|
|
|
^[25] Host-specific data for the X Window System must not be
|
|
stored in /usr/lib/X11. Host-specific configuration files such
|
|
as xorg.conf must be stored in /etc/X11. This includes
|
|
configuration data such as system.twmrc even if it is only made
|
|
a symbolic link to a more global configuration file (probably
|
|
in /usr/lib/X11).
|
|
|
|
^[26] See, for example, the "GNU Coding Standards" from the
|
|
Free Software Foundation.
|
|
|
|
^[27] The case where /usr/lib and /usr/lib<qual> are the same
|
|
(one is a symbolic link to the other) these files and the
|
|
per-application subdirectories will exist.
|
|
|
|
^[28] Software placed in / or /usr may be overwritten by system
|
|
upgrades (though we recommend that distributions do not
|
|
overwrite data in /etc under these circumstances). For this
|
|
reason, local software must not be placed outside of /usr/local
|
|
without good reason.
|
|
|
|
^[29] Locally installed system administration programs should
|
|
be placed in /usr/local/sbin.
|
|
|
|
^[30] Much of this data originally lived in /usr (man, doc) or
|
|
/usr/lib (dict, terminfo, zoneinfo).
|
|
|
|
^[31] Obviously, there are no manual pages in / because they
|
|
are not required at boot time nor are they required in
|
|
emergencies. Really.
|
|
|
|
^[32] For example, if /usr/share/man has no manual pages in
|
|
section 4 (Devices), then /usr/share/man/man4 may be omitted.
|
|
|
|
^[33] A major exception to this rule is the United Kingdom,
|
|
which is `GB' in the ISO 3166, but `UK' for most email
|
|
addresses.
|
|
|
|
^[34] /usr/local/man is deprecated and may be dropped in a
|
|
future version of this specification.
|
|
|
|
^[35] Some such files include: airport, birthtoken, eqnchar,
|
|
getopt, gprof.callg, gprof.flat, inter.phone,
|
|
ipfw.samp.filters, ipfw.samp.scripts, keycap.pcvt, mail.help,
|
|
mail.tildehelp, man.template, map3270, mdoc.template,
|
|
more.help, na.phone, nslookup.help, operator, scsi_modes,
|
|
sendmail.hf, style, units.lib, vgrindefs, vgrindefs.db,
|
|
zipcodes.
|
|
|
|
^[36] Historically, the magic file was placed in
|
|
/usr/share/misc, but modern variants of the file command use
|
|
several files and place them in /usr/share/file. For
|
|
compatibility, distribution may create a symlink at
|
|
/usr/share/misc/magic, pointing to /usr/share/file/magic.
|
|
|
|
^[37] Generally, source should not be built within this
|
|
hierarchy.
|
|
|
|
Chapter 5. The /var Hierarchy
|
|
|
|
Table of Contents
|
|
|
|
5.1. Purpose
|
|
5.2. Requirements
|
|
5.3. Specific Options
|
|
5.4. /var/account : Process accounting logs (optional)
|
|
|
|
5.4.1. Purpose
|
|
|
|
5.5. /var/cache : Application cache data
|
|
|
|
5.5.1. Purpose
|
|
5.5.2. Specific Options
|
|
5.5.3. /var/cache/fonts : Locally-generated fonts
|
|
(optional)
|
|
|
|
5.5.4. /var/cache/man : Locally-formatted manual pages
|
|
(optional)
|
|
|
|
5.6. /var/crash : System crash dumps (optional)
|
|
|
|
5.6.1. Purpose
|
|
|
|
5.7. /var/games : Variable game data (optional)
|
|
|
|
5.7.1. Purpose
|
|
|
|
5.8. /var/lib : Variable state information
|
|
|
|
5.8.1. Purpose
|
|
5.8.2. Requirements
|
|
5.8.3. Specific Options
|
|
5.8.4. /var/lib/<editor> : Editor backup files and state
|
|
(optional)
|
|
|
|
5.8.5. /var/lib/color : Color management information
|
|
(optional)
|
|
|
|
5.8.6. /var/lib/hwclock : State directory for hwclock
|
|
(optional)
|
|
|
|
5.8.7. /var/lib/misc : Miscellaneous variable data
|
|
|
|
5.9. /var/lock : Lock files
|
|
|
|
5.9.1. Purpose
|
|
|
|
5.10. /var/log : Log files and directories
|
|
|
|
5.10.1. Purpose
|
|
5.10.2. Specific Options
|
|
|
|
5.11. /var/mail : User mailbox files (optional)
|
|
|
|
5.11.1. Purpose
|
|
|
|
5.12. /var/opt : Variable data for /opt
|
|
|
|
5.12.1. Purpose
|
|
|
|
5.13. /var/run : Run-time variable data
|
|
|
|
5.13.1. Purpose
|
|
5.13.2. Requirements
|
|
|
|
5.14. /var/spool : Application spool data
|
|
|
|
5.14.1. Purpose
|
|
5.14.2. Specific Options
|
|
5.14.3. /var/spool/lpd : Line-printer daemon print queues
|
|
(optional)
|
|
|
|
5.14.4. /var/spool/rwho : Rwhod files (optional)
|
|
|
|
5.15. /var/tmp : Temporary files preserved between system
|
|
reboots
|
|
|
|
5.15.1. Purpose
|
|
|
|
5.16. /var/yp : Network Information Service (NIS) database
|
|
files (optional)
|
|
|
|
5.16.1. Purpose
|
|
|
|
5.1. Purpose
|
|
|
|
/var contains variable data files. This includes spool
|
|
directories and files, administrative and logging data, and
|
|
transient and temporary files.
|
|
|
|
Some portions of /var are not shareable between different
|
|
systems. For instance, /var/log, /var/lock, and /var/run. Other
|
|
portions may be shared, notably /var/mail, /var/cache/man,
|
|
/var/cache/fonts, and /var/spool/news.
|
|
|
|
/var is specified here in order to make it possible to mount
|
|
/usr read-only. Everything that once went into /usr that is
|
|
written to during system operation (as opposed to installation
|
|
and software maintenance) must be in /var.
|
|
|
|
If /var cannot be made a separate partition, it is often
|
|
preferable to move /var out of the root partition and into the
|
|
/usr partition. (This is sometimes done to reduce the size of
|
|
the root partition or when space runs low in the root
|
|
partition.) However, /var must not be linked to /usr because
|
|
this makes separation of /usr and /var more difficult and is
|
|
likely to create a naming conflict. Instead, link /var to
|
|
/usr/var.
|
|
|
|
Applications must generally not add directories to the top
|
|
level of /var. Such directories should only be added if they
|
|
have some system-wide implication, and in consultation with the
|
|
FHS mailing list.
|
|
|
|
5.2. Requirements
|
|
|
|
The following directories, or symbolic links to directories,
|
|
are required in /var:
|
|
Directory Description
|
|
cache Application cache data
|
|
lib Variable state information
|
|
local Variable data for /usr/local
|
|
lock Lock files
|
|
log Log files and directories
|
|
opt Variable data for /opt
|
|
run Data relevant to running processes
|
|
spool Application spool data
|
|
tmp Temporary files preserved between system reboots
|
|
|
|
Several directories are `reserved' in the sense that they must
|
|
not be used arbitrarily by some new application, since they
|
|
would conflict with historical and/or local practice. They are:
|
|
/var/backups
|
|
/var/cron
|
|
/var/msgs
|
|
/var/preserve
|
|
|
|
5.3. Specific Options
|
|
|
|
The following directories, or symbolic links to directories,
|
|
must be in /var, if the corresponding subsystem is installed:
|
|
Directory Description
|
|
account Process accounting logs (optional)
|
|
crash System crash dumps (optional)
|
|
games Variable game data (optional)
|
|
mail User mailbox files (optional)
|
|
yp Network Information Service (NIS) database files (optional)
|
|
|
|
5.4. /var/account : Process accounting logs (optional)
|
|
|
|
5.4.1. Purpose
|
|
|
|
This directory holds the current active process accounting log
|
|
and the composite process usage data (as used in some UNIX-like
|
|
systems by lastcomm and sa).
|
|
|
|
5.5. /var/cache : Application cache data
|
|
|
|
5.5.1. Purpose
|
|
|
|
/var/cache is intended for cached data from applications. Such
|
|
data is locally generated as a result of time-consuming I/O or
|
|
calculation. The application must be able to regenerate or
|
|
restore the data. Unlike /var/spool, the cached files can be
|
|
deleted without data loss. The data must remain valid between
|
|
invocations of the application and rebooting the system.
|
|
|
|
Files located under /var/cache may be expired in an application
|
|
specific manner, by the system administrator, or both. The
|
|
application must always be able to recover from manual deletion
|
|
of these files (generally because of a disk space shortage). No
|
|
other requirements are made on the data format of the cache
|
|
directories.
|
|
|
|
Rationale
|
|
|
|
The existence of a separate directory for cached data allows
|
|
system administrators to set different disk and backup policies
|
|
from other directories in /var.
|
|
|
|
5.5.2. Specific Options
|
|
|
|
Directory Description
|
|
fonts Locally-generated fonts (optional)
|
|
man Locally-formatted manual pages (optional)
|
|
www WWW proxy or cache data (optional)
|
|
<package> Package specific cache data (optional)
|
|
|
|
5.5.3. /var/cache/fonts : Locally-generated fonts (optional)
|
|
|
|
5.5.3.1. Purpose
|
|
|
|
The directory /var/cache/fonts should be used to store any
|
|
dynamically-created fonts. In particular, all of the fonts
|
|
which are automatically generated by mktexpk must be located in
|
|
appropriately-named subdirectories of /var/cache/fonts. ^[38]
|
|
|
|
5.5.3.2. Specific Options
|
|
|
|
Other dynamically created fonts may also be placed in this
|
|
tree, under appropriately-named subdirectories of
|
|
/var/cache/fonts.
|
|
|
|
5.5.4. /var/cache/man : Locally-formatted manual pages (optional)
|
|
|
|
5.5.4.1. Purpose
|
|
|
|
This directory provides a standard location for sites that
|
|
provide a read-only /usr partition, but wish to allow caching
|
|
of locally-formatted man pages. Sites that mount /usr as
|
|
writable (e.g., single-user installations) may choose not to
|
|
use /var/cache/man and may write formatted man pages into the
|
|
cat<section> directories in /usr/share/man directly. We
|
|
recommend that most sites use one of the following options
|
|
instead:
|
|
* Preformat all manual pages alongside the unformatted
|
|
versions.
|
|
* Allow no caching of formatted man pages, and require
|
|
formatting to be done each time a man page is brought up.
|
|
* Allow local caching of formatted man pages in
|
|
/var/cache/man.
|
|
|
|
The structure of /var/cache/man needs to reflect both the fact
|
|
of multiple man page hierarchies and the possibility of
|
|
multiple language support.
|
|
|
|
Given an unformatted manual page that normally appears in
|
|
<path>/man/<locale>/man<section>, the directory to place
|
|
formatted man pages in is
|
|
/var/cache/man/<catpath>/<locale>/cat<section>, where <catpath>
|
|
is derived from <path> by removing any leading usr and/or
|
|
trailing share pathname components. (Note that the <locale>
|
|
component may be missing.) ^[39]
|
|
|
|
Man pages written to /var/cache/man may eventually be
|
|
transferred to the appropriate preformatted directories in the
|
|
source man hierarchy or expired; likewise formatted man pages
|
|
in the source man hierarchy may be expired if they are not
|
|
accessed for a period of time.
|
|
|
|
If preformatted manual pages come with a system on read-only
|
|
media (a CD-ROM, for instance), they must be installed in the
|
|
source man hierarchy (e.g. /usr/share/man/cat<section>).
|
|
/var/cache/man is reserved as a writable cache for formatted
|
|
manual pages.
|
|
|
|
Rationale
|
|
|
|
Release 1.2 of this standard specified /var/catman for this
|
|
hierarchy. The path has been moved under /var/cache to better
|
|
reflect the dynamic nature of the formatted man pages. The
|
|
directory name has been changed to man to allow for enhancing
|
|
the hierarchy to include post-processed formats other than
|
|
"cat", such as PostScript, HTML, or DVI.
|
|
|
|
5.6. /var/crash : System crash dumps (optional)
|
|
|
|
5.6.1. Purpose
|
|
|
|
This directory holds system crash dumps. As of the date of this
|
|
release of the standard, system crash dumps were not supported
|
|
under Linux but may be supported by other systems which may
|
|
comply with the FHS.
|
|
|
|
5.7. /var/games : Variable game data (optional)
|
|
|
|
5.7.1. Purpose
|
|
|
|
Any variable data relating to games in /usr should be placed
|
|
here. /var/games should hold the variable data previously found
|
|
in /usr; static data, such as help text, level descriptions,
|
|
and so on, must remain elsewhere, such as /usr/share/games.
|
|
|
|
Rationale
|
|
|
|
/var/games has been given a hierarchy of its own, rather than
|
|
leaving it underneath /var/lib as in release 1.2 of this
|
|
standard. The separation allows local control of backup
|
|
strategies, permissions, and disk usage, as well as allowing
|
|
inter-host sharing and reducing clutter in /var/lib.
|
|
Additionally, /var/games is the path traditionally used by BSD.
|
|
|
|
5.8. /var/lib : Variable state information
|
|
|
|
5.8.1. Purpose
|
|
|
|
This hierarchy holds state information pertaining to an
|
|
application or the system. State information is data that
|
|
programs modify while they run, and that pertains to one
|
|
specific host. Users must never need to modify files in
|
|
/var/lib to configure a package's operation, and the specific
|
|
file hierarchy used to store the data must not be exposed to
|
|
regular users. ^[40]
|
|
|
|
State information is generally used to preserve the condition
|
|
of an application (or a group of inter-related applications)
|
|
between invocations and between different instances of the same
|
|
application. State information should generally remain valid
|
|
after a reboot, should not be logging output, and should not be
|
|
spooled data.
|
|
|
|
An application (or a group of inter-related applications) must
|
|
use a subdirectory of /var/lib for its data. There is one
|
|
required subdirectory, /var/lib/misc, which is intended for
|
|
state files that don't need a subdirectory; the other
|
|
subdirectories should only be present if the application in
|
|
question is included in the distribution. ^[41]
|
|
|
|
/var/lib/<name> is the location that must be used for all
|
|
distribution packaging support. Different distributions may use
|
|
different names, of course.
|
|
|
|
5.8.2. Requirements
|
|
|
|
The following directories, or symbolic links to directories,
|
|
are required in /var/lib:
|
|
Directory Description
|
|
misc Miscellaneous state data
|
|
|
|
5.8.3. Specific Options
|
|
|
|
The following directories, or symbolic links to directories,
|
|
must be in /var/lib, if the corresponding subsystem is
|
|
installed:
|
|
Directory Description
|
|
<editor> Editor backup files and state (optional)
|
|
<pkgtool> Packaging support files (optional)
|
|
<package> State data for packages and subsystems (optional)
|
|
color Color management information (optional)
|
|
hwclock State directory for hwclock (optional)
|
|
xdm X display manager variable data (optional)
|
|
|
|
5.8.4. /var/lib/<editor> : Editor backup files and state (optional)
|
|
|
|
5.8.4.1. Purpose
|
|
|
|
These directories contain saved files generated by any
|
|
unexpected termination of an editor (e.g., elvis, jove, nvi).
|
|
|
|
Other editors may not require a directory for crash-recovery
|
|
files, but may require a well-defined place to store other
|
|
information while the editor is running. This information
|
|
should be stored in a subdirectory under /var/lib (for example,
|
|
GNU Emacs would place lock files in /var/lib/emacs/lock).
|
|
|
|
Future editors may require additional state information beyond
|
|
crash-recovery files and lock files — this information should
|
|
also be placed under /var/lib/<editor>.
|
|
|
|
Rationale
|
|
|
|
Previous Linux releases, as well as all commercial vendors, use
|
|
/var/preserve for vi or its clones. However, each editor uses
|
|
its own format for these crash-recovery files, so a separate
|
|
directory is needed for each editor.
|
|
|
|
Editor-specific lock files are usually quite different from the
|
|
device or resource lock files that are stored in /var/lock and,
|
|
hence, are stored under /var/lib.
|
|
|
|
5.8.5. /var/lib/color : Color management information (optional)
|
|
|
|
5.8.5.1. Purpose
|
|
|
|
This directory is the home for ICC color management files
|
|
installed dynamically. This directory shall be laid out using
|
|
the same rules as the /usr/share/color directory.
|
|
|
|
5.8.6. /var/lib/hwclock : State directory for hwclock (optional)
|
|
|
|
5.8.6.1. Purpose
|
|
|
|
This directory contains the file /var/lib/hwclock/adjtime.
|
|
|
|
Rationale
|
|
|
|
In FHS 2.1, this file was /etc/adjtime, but as hwclock updates
|
|
it, that was obviously incorrect.
|
|
|
|
5.8.7. /var/lib/misc : Miscellaneous variable data
|
|
|
|
5.8.7.1. Purpose
|
|
|
|
This directory contains variable data not placed in a
|
|
subdirectory in /var/lib. An attempt should be made to use
|
|
relatively unique names in this directory to avoid namespace
|
|
conflicts. ^[42]
|
|
|
|
5.9. /var/lock : Lock files
|
|
|
|
5.9.1. Purpose
|
|
|
|
Lock files should be stored within the /var/lock directory
|
|
structure.
|
|
|
|
Lock files for devices and other resources shared by multiple
|
|
applications, such as the serial device lock files that were
|
|
originally found in either /usr/spool/locks or /usr/spool/uucp,
|
|
must now be stored in /var/lock. The naming convention which
|
|
must be used is "LCK.." followed by the base name of the
|
|
device. For example, to lock /dev/ttyS0 the file "LCK..ttyS0"
|
|
would be created. ^[43]
|
|
|
|
The format used for the contents of such lock files must be the
|
|
HDB UUCP lock file format. The HDB format is to store the
|
|
process identifier (PID) as a ten byte ASCII decimal number,
|
|
with a trailing newline. For example, if process 1230 holds a
|
|
lock file, it would contain the eleven characters: space,
|
|
space, space, space, space, space, one, two, three, zero, and
|
|
newline.
|
|
|
|
5.10. /var/log : Log files and directories
|
|
|
|
5.10.1. Purpose
|
|
|
|
This directory contains miscellaneous log files. Most logs must
|
|
be written to this directory or an appropriate subdirectory.
|
|
|
|
5.10.2. Specific Options
|
|
|
|
The following files, or symbolic links to files, must be in
|
|
/var/log, if the corresponding subsystem is installed:
|
|
File Description
|
|
lastlog record of last login of each user
|
|
messages system messages from syslogd
|
|
wtmp record of all logins and logouts
|
|
|
|
5.11. /var/mail : User mailbox files (optional)
|
|
|
|
5.11.1. Purpose
|
|
|
|
The mail spool must be accessible through /var/mail and the
|
|
mail spool files must take the form <username>. ^[44]
|
|
|
|
User mailbox files in this location must be stored in the
|
|
standard UNIX mailbox format.
|
|
|
|
Rationale
|
|
|
|
The logical location for this directory was changed from
|
|
/var/spool/mail in order to bring FHS in-line with nearly every
|
|
UNIX distribution. This change is important for
|
|
inter-operability since a single /var/mail is often shared
|
|
between multiple hosts and multiple UNIX distribution (despite
|
|
NFS locking issues).
|
|
|
|
It is important to note that there is no requirement to
|
|
physically move the mail spool to this location. However,
|
|
programs and header files must be changed to use /var/mail.
|
|
|
|
5.12. /var/opt : Variable data for /opt
|
|
|
|
5.12.1. Purpose
|
|
|
|
Variable data of the packages in /opt must be installed in
|
|
/var/opt/<subdir>, where <subdir> is the name of the subtree in
|
|
/opt where the static data from an add-on software package is
|
|
stored, except where superseded by another file in /etc. No
|
|
structure is imposed on the internal arrangement of
|
|
/var/opt/<subdir>.
|
|
|
|
Rationale
|
|
|
|
Refer to the rationale for /opt.
|
|
|
|
5.13. /var/run : Run-time variable data
|
|
|
|
5.13.1. Purpose
|
|
|
|
This directory was once intended for system information data
|
|
describing the system since it was booted. These functions have
|
|
been moved to /run; this directory exists to ensure
|
|
compatibility with systems and software using an older version
|
|
of this specification.
|
|
|
|
5.13.2. Requirements
|
|
|
|
In general, the requirements for /run shall also apply to
|
|
/var/run. It is valid to implement /var/run as a symlink to
|
|
/run.
|
|
|
|
The utmp file, which stores information about who is currently
|
|
using the system, is located in this directory.
|
|
|
|
Programs should not access both /var/run and /run directly,
|
|
except to access /var/run/utmp. ^[45]
|
|
|
|
5.14. /var/spool : Application spool data
|
|
|
|
5.14.1. Purpose
|
|
|
|
/var/spool contains data which is awaiting some kind of later
|
|
processing. Data in /var/spool represents work to be done in
|
|
the future (by a program, user, or administrator); often data
|
|
is deleted after it has been processed. ^[46]
|
|
|
|
5.14.2. Specific Options
|
|
|
|
The following directories, or symbolic links to directories,
|
|
must be in /var/spool, if the corresponding subsystem is
|
|
installed:
|
|
Directory Description
|
|
lpd Printer spool directory (optional)
|
|
mqueue Outgoing mail queue (optional)
|
|
news News spool directory (optional)
|
|
rwho Rwhod files (optional)
|
|
uucp Spool directory for UUCP (optional)
|
|
|
|
5.14.3. /var/spool/lpd : Line-printer daemon print queues (optional)
|
|
|
|
5.14.3.1. Purpose
|
|
|
|
The lock file for lpd, lpd.lock, must be placed in
|
|
/var/spool/lpd. It is suggested that the lock file for each
|
|
printer be placed in the spool directory for that specific
|
|
printer and named lock.
|
|
|
|
5.14.3.2. Specific Options
|
|
|
|
Directory Description
|
|
printer Spools for a specific printer (optional)
|
|
|
|
5.14.4. /var/spool/rwho : Rwhod files (optional)
|
|
|
|
5.14.4.1. Purpose
|
|
|
|
This directory holds the rwhod information for other systems on
|
|
the local net.
|
|
|
|
Rationale
|
|
|
|
Some BSD releases use /var/rwho for this data; given its
|
|
historical location in /var/spool on other systems and its
|
|
approximate fit to the definition of `spooled' data, this
|
|
location was deemed more appropriate.
|
|
|
|
5.15. /var/tmp : Temporary files preserved between system reboots
|
|
|
|
5.15.1. Purpose
|
|
|
|
The /var/tmp directory is made available for programs that
|
|
require temporary files or directories that are preserved
|
|
between system reboots. Therefore, data stored in /var/tmp is
|
|
more persistent than data in /tmp.
|
|
|
|
Files and directories located in /var/tmp must not be deleted
|
|
when the system is booted. Although data stored in /var/tmp is
|
|
typically deleted in a site-specific manner, it is recommended
|
|
that deletions occur at a less frequent interval than /tmp.
|
|
|
|
5.16. /var/yp : Network Information Service (NIS) database files
|
|
(optional)
|
|
|
|
5.16.1. Purpose
|
|
|
|
Variable data for the Network Information Service (NIS),
|
|
formerly known as the Sun Yellow Pages (YP), must be placed in
|
|
this directory.
|
|
|
|
Rationale
|
|
|
|
/var/yp is the standard directory for NIS (YP) data and is
|
|
almost exclusively used in NIS documentation and systems. ^[47]
|
|
__________________________________________________________
|
|
|
|
^[38] This standard does not currently incorporate the TeX
|
|
Directory Structure (a document that describes the layout TeX
|
|
files and directories), but it may be useful reading. It is
|
|
located at ftp://ctan.tug.org/tex/
|
|
|
|
^[39] For example, /usr/share/man/man1/ls.1 is formatted into
|
|
/var/cache/man/cat1/ls.1, and
|
|
/usr/X11R6/man/<locale>/man3/XtClass.3x into
|
|
/var/cache/man/X11R6/<locale>/cat3/XtClass.3x.
|
|
|
|
^[40] Data with exposed filesystem structure should be stored
|
|
in /srv.
|
|
|
|
^[41] An important difference between this version of this
|
|
standard and previous ones is that applications are now
|
|
required to use a subdirectory of /var/lib.
|
|
|
|
^[42] This hierarchy should contain files stored in /var/db in
|
|
current BSD releases. These include locate.database and
|
|
mountdtab, and the kernel symbol database(s).
|
|
|
|
^[43] Then, anything wishing to use /dev/ttyS0 can read the
|
|
lock file and act accordingly (all locks in /var/lock should be
|
|
world-readable).
|
|
|
|
^[44] Note that /var/mail may be a symbolic link to another
|
|
directory.
|
|
|
|
^[45] This is to prevent confusion about where transient files
|
|
are located. In general, a program should use either /var/run
|
|
or /run to access these files, not both.
|
|
|
|
^[46] UUCP lock files must be placed in /var/lock. See the
|
|
above section on /var/lock.
|
|
|
|
^[47] NIS should not be confused with Sun NIS+, which uses a
|
|
different directory, /var/nis.
|
|
|
|
Chapter 6. Operating System Specific Annex
|
|
|
|
Table of Contents
|
|
|
|
6.1. Linux
|
|
|
|
6.1.1. / : Root directory
|
|
6.1.2. /bin : Essential user command binaries (for use by
|
|
all users)
|
|
|
|
6.1.3. /dev : Devices and special files
|
|
6.1.4. /etc : Host-specific system configuration
|
|
6.1.5. /proc : Kernel and process information virtual
|
|
filesystem
|
|
|
|
6.1.6. /sbin : Essential system binaries
|
|
6.1.7. /sys : Kernel and system information virtual
|
|
filesystem
|
|
|
|
6.1.8. /usr/include : Header files included by C programs
|
|
6.1.9. /usr/src : Source code
|
|
6.1.10. /var/spool/cron : cron and at jobs
|
|
|
|
This section is for additional requirements and recommendations
|
|
that only apply to a specific operating system. The material in
|
|
this section should never conflict with the base standard.
|
|
|
|
6.1. Linux
|
|
|
|
This is the annex for the Linux operating system.
|
|
|
|
6.1.1. / : Root directory
|
|
|
|
On Linux systems, if the kernel is located in /, we recommend
|
|
using the names vmlinux or vmlinuz, which have been used in
|
|
recent Linux kernel source packages.
|
|
|
|
6.1.2. /bin : Essential user command binaries (for use by all users)
|
|
|
|
Linux systems which require them place these additional files
|
|
into /bin:
|
|
* setserial
|
|
|
|
6.1.3. /dev : Devices and special files
|
|
|
|
The following devices must exist under /dev.
|
|
|
|
/dev/null
|
|
All data written to this device is discarded. A read
|
|
from this device will return an EOF condition.
|
|
|
|
/dev/zero
|
|
This device is a source of zeroed out data. All data
|
|
written to this device is discarded. A read from this
|
|
device will return as many bytes containing the value
|
|
zero as was requested.
|
|
|
|
/dev/tty
|
|
This device is a synonym for the controlling terminal of
|
|
a process. Once this device is opened, all reads and
|
|
writes will behave as if the actual controlling terminal
|
|
device had been opened.
|
|
|
|
Rationale
|
|
|
|
Previous versions of the FHS had stricter requirements for
|
|
/dev. Other devices may also exist in /dev. Device names may
|
|
exist as symbolic links to other device nodes located in /dev
|
|
or subdirectories of /dev. There is no requirement concerning
|
|
major/minor number values.
|
|
|
|
6.1.4. /etc : Host-specific system configuration
|
|
|
|
Linux systems which require them place these additional files
|
|
into /etc.
|
|
* lilo.conf
|
|
|
|
6.1.5. /proc : Kernel and process information virtual filesystem
|
|
|
|
The proc filesystem is the de-facto standard Linux method for
|
|
handling process and system information, rather than /dev/kmem
|
|
and other similar methods. We strongly encourage this for the
|
|
storage and retrieval of process information as well as other
|
|
kernel and memory information.
|
|
|
|
6.1.6. /sbin : Essential system binaries
|
|
|
|
Linux systems place commands relating to filesystem maintenance
|
|
and boot loader management into /sbin.
|
|
|
|
Optional files for /sbin:
|
|
* Static binaries:
|
|
+ ldconfig
|
|
+ sln
|
|
+ ssync
|
|
Static ln (sln) and static sync (ssync) are useful when
|
|
things go wrong. The primary use of sln (to repair
|
|
incorrect symlinks in /lib after a poorly orchestrated
|
|
upgrade) is no longer a major concern now that the ldconfig
|
|
program (usually located in /usr/sbin) exists and can act
|
|
as a guiding hand in upgrading the dynamic libraries.
|
|
Static sync is useful in some emergency situations. Note
|
|
that these need not be statically linked versions of the
|
|
standard ln and sync, but may be.
|
|
The ldconfig binary is optional for /sbin since a site may
|
|
choose to run ldconfig at boot time, rather than only when
|
|
upgrading the shared libraries. (It's not clear whether or
|
|
not it is advantageous to run ldconfig on each boot.) Even
|
|
so, some people like ldconfig around for the following (all
|
|
too common) situation:
|
|
1. I've just removed /lib/<file>.
|
|
2. I can't find out the name of the library because ls is
|
|
dynamically linked, I'm using a shell that doesn't
|
|
have ls built-in, and I don't know about using "echo
|
|
*" as a replacement.
|
|
3. I have a static sln, but I don't know what to call the
|
|
link.
|
|
* Miscellaneous:
|
|
+ ctrlaltdel
|
|
+ kbdrate
|
|
So as to cope with the fact that some keyboards come up
|
|
with such a high repeat rate as to be unusable, kbdrate may
|
|
be installed in /sbin on some systems.
|
|
Since the default action in the kernel for the Ctrl-Alt-Del
|
|
key combination is an instant hard reboot, it is generally
|
|
advisable to disable the behavior before mounting the root
|
|
filesystem in read-write mode. Some init suites are able to
|
|
disable Ctrl-Alt-Del, but others may require the ctrlaltdel
|
|
program, which may be installed in /sbin on those systems.
|
|
|
|
6.1.7. /sys : Kernel and system information virtual filesystem
|
|
|
|
The sys filesystem is the location where information about
|
|
devices, drivers, and some kernel features is exposed. Its
|
|
underlying structure is determined by the particular Linux
|
|
kernel being used at the moment, and is otherwise unspecified.
|
|
|
|
6.1.8. /usr/include : Header files included by C programs
|
|
|
|
These symbolic links are required if a C or C++ compiler is
|
|
installed and only for systems not based on glibc.
|
|
/usr/include/asm -> /usr/src/linux/include/asm-<arch>
|
|
/usr/include/linux -> /usr/src/linux/include/linux
|
|
|
|
6.1.9. /usr/src : Source code
|
|
|
|
For systems based on glibc, there are no specific guidelines
|
|
for this directory. For systems based on Linux libc revisions
|
|
prior to glibc, the following guidelines and rationale apply:
|
|
|
|
The only source code that should be placed in a specific
|
|
location is the Linux kernel source code. It is located in
|
|
/usr/src/linux.
|
|
|
|
If a C or C++ compiler is installed, but the complete Linux
|
|
kernel source code is not installed, then the include files
|
|
from the kernel source code must be located in these
|
|
directories:
|
|
/usr/src/linux/include/asm-<arch>
|
|
/usr/src/linux/include/linux
|
|
|
|
<arch> is the name of the system architecture.
|
|
|
|
Note
|
|
|
|
/usr/src/linux may be a symbolic link to a kernel source code
|
|
tree.
|
|
|
|
Rationale
|
|
|
|
It is important that the kernel include files be located in
|
|
/usr/src/linux and not in /usr/include so there are no problems
|
|
when system administrators upgrade their kernel version for the
|
|
first time.
|
|
|
|
6.1.10. /var/spool/cron : cron and at jobs
|
|
|
|
This directory contains the variable data for the cron and at
|
|
programs.
|
|
|
|
Chapter 7. Appendix
|
|
|
|
Table of Contents
|
|
|
|
7.1. The FHS mailing list
|
|
7.2. Background of the FHS
|
|
7.3. General Guidelines
|
|
7.4. Scope
|
|
7.5. Acknowledgments
|
|
7.6. Contributors
|
|
|
|
7.1. The FHS mailing list
|
|
|
|
The FHS mailing list is located at
|
|
<fhs-discuss@lists.linuxfoundation.org> (subscription required
|
|
as a spam limitation measure). Mailing list subscription
|
|
information, archives, etc. are at
|
|
https://lists.linux-foundation.org/mailman/listinfo/fhs-discuss
|
|
|
|
7.2. Background of the FHS
|
|
|
|
The process of developing a standard filesystem hierarchy began
|
|
in August 1993 with an effort to restructure the file and
|
|
directory structure of Linux. The FSSTND, a filesystem
|
|
hierarchy standard specific to the Linux operating system, was
|
|
released on February 14, 1994. Subsequent revisions were
|
|
released on October 9, 1994 and March 28, 1995.
|
|
|
|
In early 1995, the goal of developing a more comprehensive
|
|
version of FSSTND to address not only Linux, but other
|
|
UNIX-like systems was adopted with the help of members of the
|
|
BSD development community. As a result, a concerted effort was
|
|
made to focus on issues that were general to UNIX-like systems.
|
|
In recognition of this widening of scope, the name of the
|
|
standard was changed to Filesystem Hierarchy Standard or FHS
|
|
for short.
|
|
|
|
Volunteers who have contributed extensively to this standard
|
|
are listed at the end of this document. This standard
|
|
represents a consensus view of those and other contributors.
|
|
|
|
Thanks to Network Operations at the University of California at
|
|
San Diego, and later to SourceForge, who allowed us to use
|
|
their excellent mailing list servers during earlier phases of
|
|
development.
|
|
|
|
7.3. General Guidelines
|
|
|
|
Here are some of the guidelines that have been used in the
|
|
development of this standard:
|
|
* Solve technical problems while limiting transitional
|
|
difficulties.
|
|
* Make the specification reasonably stable.
|
|
* Gain the approval of distributors, developers, and other
|
|
decision-makers in relevant development groups and
|
|
encourage their participation.
|
|
* Provide a standard that is attractive to the implementors
|
|
of different UNIX-like systems.
|
|
|
|
7.4. Scope
|
|
|
|
This document specifies a standard filesystem hierarchy for FHS
|
|
filesystems by specifying the location of files and
|
|
directories, and the contents of some system files.
|
|
|
|
This standard has been designed to be used by system
|
|
integrators, package developers, and system administrators in
|
|
the construction and maintenance of FHS compliant filesystems.
|
|
It is primarily intended to be a reference and is not a
|
|
tutorial on how to manage a conforming filesystem hierarchy.
|
|
|
|
The FHS grew out of earlier work on FSSTND, a filesystem
|
|
organization standard for the Linux operating system. It builds
|
|
on FSSTND to address interoperability issues not just in the
|
|
Linux community but in a wider arena including 4.4BSD-based
|
|
operating systems. It incorporates lessons learned in the BSD
|
|
world and elsewhere about multi-architecture support and the
|
|
demands of heterogeneous networking.
|
|
|
|
Although this standard is more comprehensive than previous
|
|
attempts at filesystem hierarchy standardization, periodic
|
|
updates may become necessary as requirements change in relation
|
|
to emerging technology. It is also possible that better
|
|
solutions to the problems addressed here will be discovered so
|
|
that our solutions will no longer be the best possible
|
|
solutions. Supplementary drafts may be released in addition to
|
|
periodic updates to this document. However, a specific goal is
|
|
backwards compatibility from one release of this document to
|
|
the next.
|
|
|
|
Comments related to this standard are welcome. Any comments or
|
|
suggestions for changes may be directed to the FHS mailing
|
|
list, or filed as bugs, or both. Typographical or grammatical
|
|
comments should be filed as bugs. The bugtracker is at
|
|
http://bugs.linuxfoundation.org - use the category FHS.
|
|
|
|
Before sending mail to the mailing list it is requested that
|
|
you first glance at the mailing list archives to avoid
|
|
excessive re-discussion of old topics.
|
|
|
|
Questions about how to interpret items in this document may
|
|
occasionally arise. If you have need for a clarification,
|
|
please contact the FHS mailing list. Since this standard
|
|
represents a consensus of many participants, it is important to
|
|
make certain that any interpretation also represents their
|
|
collective opinion. For this reason it may not be possible to
|
|
provide an immediate response unless the inquiry has been the
|
|
subject of previous discussion.
|
|
|
|
7.5. Acknowledgments
|
|
|
|
The developers of the FHS wish to thank the developers, system
|
|
administrators, and users whose input was essential to this
|
|
standard. We wish to thank each of the contributors who helped
|
|
to write, compile, and compose this standard.
|
|
|
|
The FHS Group also wishes to thank those Linux developers who
|
|
supported the FSSTND, the predecessor to this standard. If they
|
|
hadn't demonstrated that the FSSTND was beneficial, the FHS
|
|
could never have evolved.
|
|
|
|
7.6. Contributors
|
|
|
|
Brandon S. Allbery John A. Martin Mike Sangrey
|
|
Keith Bostic Ian McCloghrie David H. Silber
|
|
Drew Eckhardt Chris Metcalf Thomas Sippel-Dau
|
|
Rik Faith Ian Murdock Theodore Ts'o
|
|
Karl Goetz David C. Niemi Stephen Tweedie
|
|
Stephen Harris Lennart Poettering Fred N. van Kempen
|
|
Ian Jackson Daniel Quinlan Bernd Warken
|
|
Andreas Jaeger Eric S. Raymond Mats Wichmann
|
|
Jeff Licquia Rusty Russell Christopher Yeoh
|