/root — домашний каталог суперпользователя. Рекомендуемое место его расположения — корневая файловая система. В FHS подчеркивается, что учетная запись суперпользователя должна использоваться исключительно для системного администрирования и его не рекомендуется расходовать для выполнения задач, которые могут быть выполнены непривилегированным пользователем. По этой причине не стоит размещать в root подкаталоги для почты и других приложений. Почта для таких администраторских ролей, как root, postmaster и webmaster должна пересылаться соответствующему пользователю.
/sbin содержит утилиты для выполнения задач системного администрирования (и другие команды, используемые только пользователем root). Этот каталог содержит исполняемые файлы, необходимые для загрузки системы и ее восстановления в различных ситуациях (restoring, recovering, and/or repairing the system), не попавшие в каталог /bin. Единственная команда, которая обязательно должна присутствовать в /sbin, — shutdown. К примеру, команда ping, хотя она абсолютно необходима суперпользователю, часто используется и рядовыми пользователями, и по этой причине должна размещаться в /bin. Авторы стандарта рекомендуют предоставить всем пользователям право на чтение и выполнение для всех файлов, расположенных в /sbin, кроме, может быть тех программ, для которых установлены биты setuid и setgid. Разделение каталогов /bin и /sbin делается с целью установления явного различия между исполняемыми файлами, которые используются всеми, и теми утилитами, которые в основном используются для решения административных задач. С точки зрения безопасности нет никаких преимуществ в том, чтобы сделать /sbin недоступным для пользователей.
Каталог /tmp предназначен для хранения временных файлов, создаваемых в процессе работы различных программ. Рекомендуется удалять все файлы и каталоги в /tmp при каждой загрузке системы.
Для сохранения совместимости со старыми системами (до тех пор, пока все реализации не начнут использовать каталоги, размещенные непосредственно в /var) могут создаваться следующие символические ссылки:
/usr/spool -> /var/spool
/usr/tmp -> /var/tmp
/usr/spool/locks -> /var/lock
Каталог /usr/local используется для установки программ, которые будут использоваться локально в рамках данного хоста. Он может использоваться для программ и данных, не попавших в каталог /usr, доступ к которым разрешен с других хостов. Этот каталог не должен перезаписываться при обновлениях системного программного обеспечения. Поскольку в этот каталог устанавливаются программные пакеты, в нем создается структура подкаталогов, аналогичная структуре корневого каталога и каталога /usr.
/usr/share содержит все файлы, которые предназначены только для чтения и не зависят от архитектуры. Скажем, компьютеры на платформах i386, Alpha и PowerPC могут поддерживать один общий каталог /usr/share, который монтируется на остальных компьютерах. Примерами файлов, которые размещаются в этом каталоге, могут служить файлы документации (man, doc) или базы данных (dict, terminfo, zoneinfo). Любая программа или пакет, который содержит или требует данных, не подлежащих модификации, должны хранить эти данные в каталоге /usr/share (или /usr/local/share, если пакет установлен локально). В каталоге /usr/share создаются следующие подкаталоги или символические ссылки:
man — интерактивные руководства;
misc — различные архитектурно-независимые данные, для которых не требуется отдельный подкаталог в /usr/share;
dict — словари (факультативно), обычно здесь находится только файл words для английского языка, который используется утилитой look и различными программами проверки правописания; списки слов для других языков могут быть добавлены, используя английское название соответствующего языка, например, /usr/share/dict/french, /usr/share/ dict/danish и т.д.;
doc - различная документация (факультативно);
games - файлы статических данных для /usr/games (факультативно);
info - основной каталог для системы GNU Info (факультативно);
locale - локальная информация (факультативно);
nls - каталоги сообщений для поддержки языков (факультативно);
sgml - данные для SGML и XML (факультативно);
terminfo - каталог базы данных для terminfo (факультативно);
tmac - макросы для troff (факультативно);
zoneinfo - конфигурационные файлы и информация о временной зоне (факультативно).
Данные игровых программ, сохраняемые в /usr/share/games, должны быть статическими. Любые модифицируемые файлы, такие как файлы с протоколами и результатами игр, должны размещаться в каталоге /var/games.
Как известно, страницы интерактивного руководства man традиционно разбиты на секции. Для каждой секции создается отдельный каталог с именем <mandir>/<locale>/manN/<arch>, где <arch> — указание на архитектуру (например, i386), а строка <locale> определяет язык, страну и кодировку и имеет следующий формат:
<language>[_<territory>][.<character-set>][,<version>].
Каталог /var содержит файлы с изменяющимися данными: каталоги и файлы очередей, данные об администрировании, временные файлы. Некоторые части каталоговой структуры /var не являются разделяемыми между разными системами. К ним относятся /var/log, /var/lock и /var/run. Другие части могут быть разделяемыми, например, /var/mail, /var/cache/man, /var/cache/fonts и /var/spool/news. Структура каталогов /var определяется в стандарте FHS с той целью, чтобы сделать возможным монтирование каталога /usr в режиме только для чтения. Все, что записывается на диск в процессе выполнения системных операций (в противоположность процессам установки и поддержки программ), должно размещаться в каталоге /var. Несколько подкаталогов «зарезервированы» — они не должны использоваться произвольным образом, поскольку это противоречит сложившейся практике: /var/backups, /var/cron, /var/msgs,
/var/preserve.
Приложения в общем случае не должны добавлять каталоги непосредственно в /var. Такие каталоги должны создаваться в соответствующих подкаталогах. Каталог /var/cache предназначен для кэширования данных приложениями. В отличие от /var/spool, кэшированные файлы могут быть удалены без потери данных. Но эти данные должны сохраняться между сеансами работы приложения и при перезагрузках системы. Приложение должно всегда иметь возможность продолжить работу, даже после удаления этих файлов администратором (например, при нехватке дискового пространства). Существование отдельного каталога для кэшируемых данных позволяет системным администраторам устанавливать для этого каталога правила использования и резервного копирования, отличающиеся от правил, устанавливаемых для других каталогов в /var. Обычно в этом каталоге создаются подкаталоги fonts (локально сгенерированные шрифты), man (локально отформатированные страницы руководства), www (кэш данных для WWW-прокси), <package> (кэшируемые данные пакета <package>). /var/cache/man предусмотрен для сайтов, в которых файловая система /usr монтируется только на чтение, но в них допускается создание страниц руководства, отформатированных локально. Сайты, в которых /usr монтируется с правом записи (например, когда у системы всего один пользователь) могут не создавать каталога /var/cache/man, а использовать вместо него каталоги cat<section> непосредственно в /usr/share/man.
Файлы блокирования устройств и других ресурсов, используемые многими приложениями, такие как файлы блокирования последовательных портов, должны храниться в каталоге /var/lock. Названия этих файлов должны формироваться в соответствии с соглашением, согласно которому используется префикс «LCK..», за которым следует базовое имя устройства. Файлы блокирования в /var/lock должны быть всем доступны по чтению.
Каталог /var/log содержит разнообразные файлы протоколов: lastlog (запись о последнем входе в систему каждого пользователя); messages (системные сообщения от syslogd); wtmp (записи о всех входах и выходах пользователей в систему).
Область спулинга для почты должна размещаться в каталоге /var/mail, а имена файлов с сообщениями должны иметь вид <username>. Файлы почтовых ящиков в этих каталогах должны храниться в формате стандартных почтовых ящиков Unix.
Переменные данные для пакетов, установленных в /opt, должны размещаться в /var/opt/<package>, где <package> — название структуры каталогов в /opt, в которой хранятся статические данные дополнительного пакета ПО, исключая те случаи, когда размещение явно указано в каком-либо файле из /etc. На внутреннюю структуру каталога /var/opt/<package> никаких ограничений не накладывается.
Каталог /var/run содержит данные, описывающие состояние системы с момента ее загрузки. Программы могут иметь подкаталоги в каталоге /var/run, тем более, если они используют более одного файла времени выполнения. В этом каталоге должны быть, в частности, размещены файлы с идентификаторами запущенных процессов (PID). Соглашение об именах этих файлов следующее: <program-name>.pid. Содержимое PID-файла представляет собой идентификатор процесса в коде ASCII, записанный в десятичной нотации, за которым следует символ конца строки. Например, если crond запущен как процесс с номером 25, /var/run/crond.pid будет содержать три символа: два, пять и символ новой строки. В /var/run расположен также файл utmp, в котором хранится информация о том, кто в данный момент использует систему. Непривилегированные пользователи должны быть лишены права записи в каталог /var/run.
Каталог /var/spool содержит данные, которые ожидают какой-то последующей обработки: подкаталоги lpd (спулинг для принтера), mqueue (очередь исходящей почты), news (спулинг новостей), uucp (спулинг для UUCP) и т.п.