Блог

  • Стандарт файловой системы FHS

    Рабочая группа LSB, The Linux Foundation Версия 3.0

    Авторские права © 2015 The Linux Foundation

    Авторские права © 1994–2004 Дэниел Куинлан

    Авторские права © 2001–2004 Пол «Расти» Рассел

    Авторские права © 2003–2004 Кристофер Йео

    Все торговые марки и авторские права сохраняются за их владельцами, если не указано обратное. Упоминание термина в этом документе не влияет на действительность каких-либо товарных знаков или знаков обслуживания.

    Допускается создавать и распространять точные копии данного стандарта при условии сохранения авторских прав и текущего разрешения на всех копиях.

    Также разрешается копировать и распространять изменённые версии данного стандарта с соблюдением условий точных копий, при условии, что на титульном листе будет ясно указано, что это модифицированная версия, со ссылкой на оригинальный стандарт, а также при условии предоставления информации о получении исходного стандарта. Вся производная работа должна распространяться на тех же условиях, что и оригинал.

    Разрешено копировать и распространять переводы данного стандарта на другие языки на условиях, аналогичных для изменённых версий, за исключением того, что уведомление о разрешении может быть размещено в переводе, одобренном правообладателем.

    Дата: 19 марта 2015 года.

    Краткое содержание

    Данный стандарт содержит набор требований и рекомендаций для организации файлов и каталогов в системах, основанных на UNIX. Эти рекомендации разработаны для обеспечения совместимости приложений, инструментов для администрирования, разработки и скриптов, а также для повышения единообразия документации, относящейся к этим системам.

    Стандарт файловой системы (FHS) в UNIX-подобных операционных системах включает в себя набор правил и рекомендаций для организации файлов и каталогов. Эти правила разработаны с целью обеспечения совместимости различных приложений, инструментов системного администрирования, инструментов разработки и скриптов. Кроме того, они направлены на улучшение единообразия документации, связанной с этими системами.

    Этот стандарт устанавливает правила для программного обеспечения, определяющие расположение установленных файлов и каталогов. Также он регулирует доступ пользователей к этим файлам и каталогам.

    В стандарте изложены основные принципы для каждого уровня файловой системы. Определено минимальное количество необходимых файлов и каталогов, описаны исключения из общих правил, а также приведены конкретные примеры разногласий, возникавших ранее.

    Поставщики программного обеспечения должны разрабатывать приложения в соответствии с FHS и использовать дистрибутивы, соответствующие этому стандарту. Разработчики операционных систем обязаны создавать системы, соответствующие требованиям FHS. Пользователи должны осознавать, что их система соответствует этим стандартам и следить за их соблюдением.

    Документ FHS имеет ограниченную область применения, так как вопросы локального размещения файлов относятся к компетенции локальных администраторов. FHS не заменяет их работу. Основное назначение FHS — обеспечение согласованности размещения файлов между различными компонентами системы, такими как локальные сайты, дистрибутивы, приложения и документация.

    Файловая система

    Настоящий стандарт устанавливает, что операционная система, на которой базируется файловая система, совместимая с FHS, должна обеспечивать те же базовые функции безопасности, что и большинство файловых систем UNIX.

    Файлы различаются по двум основным признакам: возможности совместного использования и неизменности. Обычно файлы, которые отличаются по одному из этих критериев, должны располагаться в разных каталогах, что упрощает организацию хранения файлов с разными характеристиками в различных файловых системах.

    Совместно используемые файлы можно хранить на одном сервере и использовать на других. Несовместно используемые файлы не предназначены для обмена. Например, файлы в пользовательских домашних директориях могут быть общими, а файлы блокировок устройств — нет.

    Статические файлы включают двоичные файлы, библиотеки, документацию и другие файлы, которые изменяются только с разрешения системного администратора. Переменные файлы не относятся к статическим.

    Совместно используемые файлы могут находиться на одном сервере и использоваться на нескольких других. Однако не все файлы в структуре файловой системы доступны для совместного использования, поэтому в каждой системе предусмотрено локальное хранилище, содержащее как минимум файлы, которые нельзя использовать совместно. Удобно, когда необходимые системе файлы с другого сервера можно получить, подключив один или несколько каталогов с этого сервера.

    Статические и изменяемые файлы необходимо хранить раздельно, поскольку статические файлы могут находиться на носителях только для чтения и не требуют резервного копирования по тому же графику, как изменяемые файлы.

    В предыдущих версиях файловых систем, таких как UNIX, статические и изменяемые файлы располагались как в каталоге /usr, так и в /etc. Для реализации упомянутых преимуществ была создана иерархия /var, и все изменяемые файлы были перемещены из /usr в /var. Теперь /usr можно монтировать только для чтения (при условии, что это отдельная файловая система). Изменяемые файлы из /etc постепенно перемещались в /var по мере развития технологий.

    Корневая файловая система

    Корневая файловая система должна содержать все необходимые компоненты для загрузки, восстановления или ремонта операционной системы.

    Для корректной загрузки системы в корневом разделе должны быть установлены утилиты и конфигурационные файлы, обеспечивающие подключение других файловых систем. Это включает загрузчик, системные утилиты и прочие данные, требуемые для начальной загрузки. Каталоги /usr, /opt и /var спроектированы таким образом, что их можно разместить на отдельных разделах или файловых системах. Для восстановления системы в корневом каталоге должны присутствовать инструменты, позволяющие опытному администратору диагностировать и исправлять повреждения. Также в корневой файловой системе должны быть средства для восстановления системы из резервных копий, хранящихся на различных носителях, таких как дискеты или магнитные ленты.

    Обоснование: Минимальные требования к корневой файловой системе должны быть максимально скромными, но при этом обеспечивать необходимый уровень функциональности. Многим пользователям не требуется сложная структура разделов, однако возможность уменьшения размера корневой файловой системы важна по нескольким причинам:

    1. Корневую файловую систему часто монтируют на небольших носителях.
    2. Корневой каталог содержит множество специфичных файлов конфигурации, таких как ядро системы и имя хоста, что делает его непригодным для совместного использования в сетевых системах.
    3. Ограничение размера корневой файловой системы на серверах в сетевых системах позволяет уменьшить потери дискового пространства из-за файлов, недоступных для сетевого использования.
    4. Это также позволяет использовать рабочие станции с меньшими локальными дисками.
    5. Даже если у вас большая корневая файловая система, найдутся пользователи с меньшими разделами. Избыточное количество файлов может вызвать проблемы совместимости с другими системами, использующими корневые файловые системы меньшего размера.
    6. Для разработчиков важно учитывать, что ошибки на диске, повреждающие корневую файловую систему, могут привести к серьезным проблемам. Небольшая корневая файловая система менее подвержена повреждениям при сбоях системы.

    Приложения не должны создавать или требовать специальных файлов или подкаталогов в корневом каталоге, так как другие уровни файловой иерархии предоставляют достаточную гибкость для размещения пакетов.

    Создание новых подкаталогов в корневой файловой системе имеет несколько негативных последствий:

    1. Это занимает место в корневом разделе, которое системный администратор может захотеть сделать компактным и простым в использовании для повышения производительности или безопасности.
    2. Это противоречит правилам распределения стандартных файловых иерархий по различным томам, которые мог установить системный администратор.
    3. Дистрибутивы должны тщательно анализировать возможные последствия создания новых каталогов в корневой иерархии, включая влияние на переносимость приложений.

    bin — Основные двоичные файлы команд

    boot — Статические файлы загрузчика

    dev — Файлы устройств

    etc — Конфигурация системы для конкретного хоста

    lib — Основные разделяемые библиотеки и модули ядра

    media — Точка крепления для съемных носителей

    mnt — Точка подключения для временного монтирования файловой системы

    opt — Дополнительные пакеты прикладного программного обеспечения

    run — Данные, относящиеся к запущенным процессам

    sbin — Основные системные двоичные файлы

    srv — Данные об услугах, предоставляемых этой системой

    tmp — Временные файлы

    usr — Вторичная иерархия

    var — Переменные данные

    Следующие каталоги или символические ссылки на каталоги должны находиться в /, если установлена соответствующая подсистема:

    home — Домашние каталоги пользователей (необязательно)
    lib — Необходимые разделяемые библиотеки альтернативного формата (необязательно)
    root — Домашняя директория для пользователя root (необязательно)


    /bin — основные пользовательские двоичные файлы команд

    В директории /bin находятся команды, которые могут применяться как системными администраторами, так и обычными пользователями. Эти команды особенно важны в ситуациях, когда другие файловые системы недоступны, например, при работе в однопользовательском режиме. Кроме того, здесь могут быть команды, которые косвенно задействованы в различных скриптах.

    В каталоге /bin не должно быть подкаталогов.

    В каталоге /bin обязательно должны присутствовать следующие команды и символические ссылки на команды:

    cat Утилита для объединения файлов и вывода их содержимого в стандартный поток вывода.

    chgrp Утилита для изменения группы владельцев файлов.

    chmod Утилита для модификации прав доступа к файлам.

    chown Утилита для изменения владельца и группы файлов.

    cp Утилита для копирования файлов и каталогов.

    date Утилита для отображения или установки системной даты и времени.

    dd Утилита для конвертации и копирования файлов.

    df Утилита для создания отчета о занятости дискового пространства файловой системы.

    dmesg Утилита для просмотра или управления буфером сообщений ядра.

    echo Утилита для вывода строки текста.

    false Утилита, выполняющая бесполезную операцию, не возвращающую успешного результата.

    hostname Утилита для отображения или изменения имени хоста системы.

    kill Утилита для отправки сигналов процессам.

    ln Утилита для создания ссылок между файлами.

    login Утилита для начала сеанса работы в системе.

    ls Утилита для перечисления содержимого каталогов.

    mkdir Утилита для создания каталогов.

    mknod Утилита для создания специальных файлов (блочных или символьных).

    more Утилита для постраничного просмотра текста.

    mount Утилита для монтирования файловых систем.

    mv Утилита для перемещения или переименования файлов.

    ps Утилита для составления отчета о состоянии процессов.

    pwd Утилита для отображения текущего рабочего каталога.

    rm Утилита для удаления файлов или каталогов.

    rmdir Утилита для удаления пустых каталогов.

    sed Утилита для редактирования потоков.

    sh Командная оболочка, соответствующая стандарту POSIX.

    stty Утилита для изменения и отображения настроек терминала.

    su Утилита для смены идентификатора пользователя.

    sync Утилита для очистки буферов файловой системы.

    true Утилита, выполняющая успешную операцию, не возвращающую ошибки.

    umount Утилита для размонтирования файловых систем.

    uptime Утилита для отображения системной информации.

    Если /bin/sh не соответствует стандарту POSIX, то это должен быть жёсткий или символический линк на настоящую команду оболочки.

    Команды [ и test следует размещать в директориях /bin или /usr/bin.

    Разные оболочки ведут себя по-разному, когда их вызывают как sh, чтобы сохранить совместимость с POSIX. При этом, если необходимо, можно вносить изменения или дополнения в стандарт.

    Если в системе установлена соответствующая подсистема, то в каталоге /bin должны присутствовать следующие программы или символические ссылки на них:

    csh Оболочка C (необязательна)/

    ed Редактор ed (необязателен)/

    tar Утилита для архивирования (необязательна)/

    cpio Утилита для архивирования (по желанию)/

    gzip Утилита сжатия GNU (необязательна)/

    gunzip Утилита для распаковки GNU (необязательна)/

    zcat Утилита для распаковки GNU (необязательна)/

    netstat Утилита для сбора сетевой статистики (необязательна)/

    ping Утилита для тестирования сети ICMP (необязательна) |

    Обратите внимание, что /bin/csh может быть символической ссылкой на /bin/tcsh или /usr/bin/tcsh.

    Rоманды tar, gzip и cpio позволяют восстановить систему в случае повреждения корневого раздела. Однако если восстановление с корневого раздела не предполагается, эти утилиты можно не устанавливать. Например, если корневой раздел находится на микросхеме ПЗУ и монтируется через NFS, то tar, gzip и cpio могут быть необязательны.

    Если же восстановление системы планируется по сети, то на корневом разделе должны быть доступны ftp или tftp, а также все необходимые инструменты для подключения по этим протоколам.

    /boot: статические файлы загрузчика

    В этом каталоге есть всё, что нужно для загрузки, за исключением файлов конфигурации, которые не используются на этом этапе, и установщика карты. В директории /boot хранятся данные, необходимые до того, как ядро начнёт выполнять программы в пользовательском режиме. К этим данным могут относиться сохранённые основные загрузочные секторы и файлы карты секторов.

    Программы, требующиеся для загрузки файла загрузчиком, должны находиться в директории /sbin. Файлы настроек для загрузчиков, которые не нужны во время загрузки, следует размещать в директории /etc.

    Основная часть операционной системы должна быть расположена в директории / или /boot.

    Некоторые архитектуры могут иметь особые требования к директории /boot, которые обусловлены их специфическими характеристиками или ограничениями. Эти требования не указаны в данном контексте. Дистрибутивы могут вводить дополнительные условия для обеспечения корректного запуска системы на таких архитектурах.

    /dev: файлы устройств

    В каталоге /dev расположены специальные файлы и файлы устройств.

    Если возможно, что устройства в /dev будут создаваться вручную, в этом каталоге должна присутствовать команда MAKEDEV, позволяющая создавать устройства по мере необходимости. Также можно использовать MAKEDEV.local для локальных устройств.

    Если это потребуется, MAKEDEV должна обеспечивать возможность создания любого устройства, совместимого с системой, а не только тех, которые предусмотрены конкретным дистрибутивом.

    /etc: системная конфигурация для конкретного хоста

    В директории /etc находятся файлы конфигурации. Файл конфигурации — это локальный текстовый файл, предназначенный для управления работой программы. Он должен быть статичным и не может быть исполняемым исполняемым двоичным файлом.[2]

    Рекомендуется размещать файлы конфигурации в подкаталогах директории /etc, а не непосредственно в ней.

    В директории /etc не допускается размещение двоичных файлов.

    В /etc обязательно должны присутствовать следующие каталоги или символические ссылки на них:

    • Конфигурация для /opt

    Если установлены определённые подсистемы, то в /etc также должны быть следующие каталоги или символические ссылки на них.

    X11 Настройка системы X Window (необязательно)
    sgml Настройка для SGML (необязательно)
    xml Настройка XML (необязательно)

    Следующие файлы или символические ссылки на файлы должны находиться в /etc если установлена соответствующая подсистема:

    csh.login Файл общесистемной инициализации для входа в оболочку C (необязательно)
    exports Список контроля доступа к файловой системе NFS (необязательно)
    fstab Статическая информация о файловых системах (необязательно)
    ftpusers Список контроля доступа пользователей к FTP-демону (необязательно)
    gateways Файл со списком шлюзов для маршрутизации (необязательно)
    gettydefs Настройки скорости и терминала, используемые getty (необязательно)
    group Файл группы пользователей (необязательно)
    host.conf Файл конфигурации Resolver (необязательно)
    hosts Статическая информация об именах хостов (необязательно)
    hosts.allow Файл доступа к хосту для TCP-оболочек (необязательно)
    hosts.deny Файл доступа к хосту для TCP-оболочек (необязательно)
    hosts.equiv Список доверенных хостов для rlogin, rsh, rcp (необязательно)
    hosts.lpd Список доверенных хостов для lpd (необязательно)
    inetd.conf Файл конфигурации для inetd (необязательно)
    inittab Файл конфигурации для инициализации (необязательно)
    issue Сообщение перед входом в систему и файл с идентификационными данными (необязательно)
    ld.so.conf Список дополнительных каталогов для поиска разделяемых библиотек (необязательно)
    motd Сообщение дня после входа в систему (необязательно)
    mtab Динамическая информация о файловых системах (необязательно)
    mtools.conf Файл конфигурации для mtools (необязательно)
    networks Статическая информация об именах сетей (необязательно)
    passwd Файл с паролем (необязательно)
    printcap База данных возможностей принтера lpd (необязательно)
    profile Файл общесистемной инициализации для входа в оболочку sh (необязательно)
    protocols Список IP-протоколов (необязательно)
    resolv.conf Файл конфигурации Resolver (необязательно)
    rpc Список протоколов RPC (необязательно)
    securetty Контроль доступа к TTY для входа в систему с правами root (необязательно)
    services Имена портов для сетевых служб (необязательно)
    shells Пути к допустимым оболочкам для входа в систему (необязательно)
    syslog.conf Файл конфигурации для syslogd (необязательно)
    mtab не соответствует статичному характеру /etc: допускается по историческим причинам.

    /etc/opt: конфигурационные файлы для /opt

    Файлы конфигурации для дополнительных пакетов прикладного ПО должны находиться в каталоге /etc/opt/<subdir>, где <subdir> обозначает название поддерева в /opt, содержащего статические данные этого пакета. Внутренняя структура /etc/opt/<subdir> не ограничена строгими правилами. Если для корректной работы системы или пакета требуется, чтобы конфигурационный файл находился в другом месте, его можно разместить вне /etc/opt/<subdir>.

    /etc/X11: конфигурация X Window (не обязательно)

    /etc/X11 хранит пользовательские настройки X11 и необходим для локального управления, если /usr доступен только для чтения. В этом каталоге должны находиться следующие файлы или символические ссылки:

    • xorg.conf (не обязательно): файл конфигурации для X.org версий 7 и выше.
    • Xmodmap (не обязательно): файл для глобальной модификации клавиатуры X11.

    Подкаталоги /etc/X11 могут содержать каталоги для xdm и других программ, таких как оконные менеджеры.

    /etc/sgml: конфигурационные файлы для SGML (не обязательно)

    Здесь хранятся общие конфигурационные файлы, определяющие параметры систем SGML. Файлы с расширением *.conf являются общими файлами конфигурации, а файлы с расширением *.cat представляют собой централизованные каталоги для конкретных DTD, содержащие ссылки на все необходимые для их использования каталоги. Файл суперкаталога catalog включает ссылки на все централизованные каталоги.

    /etc/xml: конфигурационные файлы для XML (не обязательно)

    В этом каталоге находятся общие конфигурационные файлы, которые задают параметры XML-систем. Файлы с расширением *.conf представляют собой общие файлы конфигурации, а файл суперкаталога catalog содержит ссылки на все централизованные каталоги.

    /home: домашние каталоги пользователей

    Концепция /home представляет собой стандартный подход, однако эта файловая система адаптирована для конкретного веб-сайта. Конфигурация будет варьироваться в зависимости от хостинга. В связи с этим ни одно программное обеспечение не должно предполагать фиксированное расположение домашнего каталога. Вместо этого оно должно запрашивать его местоположение.

    Пользовательские конфигурационные файлы для приложений размещаются в домашнем каталоге пользователя, в файле, который начинается с точки (так называемый «скрытый файл»). Если приложению необходимо создать несколько таких файлов, их следует расположить в подкаталоге, название которого также начинается с точки (так называемый «скрытый подкаталог»). При этом файлы конфигурации не должны носить имена, начинающиеся с точки.

    Характеристики и символы домашнего каталога. В прошлом были попытки стандартизировать структуру домашних каталогов, включая спецификацию XDG Base Directories и соглашения GLib о содержимом пользовательских каталогов. В перспективе возможны дальнейшие усилия в этом направлении. Для обеспечения совместимости с программным обеспечением, которое использует эти стандарты и соглашения, дистрибутивы могут создавать иерархические структуры каталогов, соответствующие указанным спецификациям и соглашениям. Эти структуры каталогов могут быть встроены в домашние каталоги.

     /lib: основные разделяемые библиотеки и модули ядра

    В каталоге /lib хранятся библиотеки, необходимые для запуска системы и выполнения команд в её корневой файловой системе. Эти библиотеки представлены в виде двоичных файлов в директориях /bin и /sbin.

    Для корректной работы системы требуется наличие хотя бы одного из следующих файлов (это могут быть файлы или символические ссылки):

    libc.so. Динамически подключаемая библиотека C (не обязательно)

    ld. Программа для компоновки и загрузки исполняемых файлов во время выполнения (не обязательно) Если установлен препроцессор C, /lib/cpp должна быть его символической ссылкой, поскольку так сложилось исторически.

    В каталоге /lib должны находиться следующие директории или символические ссылки на них, если соответствующие компоненты системы установлены:

     /lib<qual> : альтернативные форматы основных разделяемых библиотек (необязательно)

    Может существовать один или несколько вариантов /lib

    Если существует один или несколько таких каталогов, требования к их содержимому такие же, как и к обычному /lib каталогу, за исключением того, что /lib<qual>/cpp не требуется.

    /media: точка подключения для съемных носителей

    Этот каталог содержит подкаталоги, предназначенные для подключения съемных носителей, таких как дискеты, компакт-диски и ZIP-диски.

    В прошлом для подключения съемных устройств применялись и другие пути, такие как /cdrom, /mnt или /mnt/cdrom. Размещение всех точек подключения для съемных носителей непосредственно в корневом каталоге может привести к появлению множества дополнительных каталогов в /. Хотя в последнее время стало популярным использовать подкаталоги в /mnt в качестве точек подключения, это идет вразрез с давней традицией использования /mnt как временной точки подключения.

    В системах с установленной соответствующей подсистемой в каталоге /media должны находиться следующие каталоги или символические ссылки на них:

    floppy Дисковод (опционально)

    cdrom Привод CD-ROM (опционально)

    cd-recorder Устройство записи компакт-дисков (опционально

    zip Почтовый привод (опционально)

    Если для подключения определенного типа носителя используется несколько устройств, каталоги можно создать, добавив цифры к названиям доступных каталогов, начиная с ‘0’, при условии, что полное имя также должно существовать.

    /mnt: точка подключения для временно подключенной файловой системы

    Этот каталог создан для того, чтобы администратор мог временно подключать файловую систему. Его содержимое — это локальная проблема, которая не должна мешать работе программ.

    Программы установки не должны использовать этот каталог. Вместо этого следует выбрать другой временный каталог, который не задействован системой.

     /opt: дополнительные пакеты прикладного программного обеспечения

    Каталоги /opt зарезервированы для установки дополнительного прикладного программного обеспечения.

    Установленный пакет должен содержать статические файлы в отдельном каталоге /opt/<package> или /opt/<provider>. Здесь <package> обозначает название программного пакета, а <provider> — имя поставщика, зарегистрированное в LANANA.

    Каталоги /opt/bin, /opt/doc, /opt/include, /opt/info, /opt/lib и /opt/man предназначены для использования локальным системным администратором. Пакеты могут включать «внешние» файлы, которые администратор должен разместить в этих каталогах (создав ссылки или копии). Однако пакеты должны функционировать и без этих каталогов.

    Программы для пользователей должны находиться в каталоге /opt/<package>/bin или в иерархии /opt/<provider>. Справочные страницы UNIX, если они есть в пакете, должны быть в /opt/<package>/share/man или в /opt/<provider>, с той же структурой, что и в /usr/share/man.

    Файлы пакета, изменяющиеся в процессе работы, должны быть в /var/opt. Дополнительные сведения можно найти в разделе /var/opt.

    Файлы конфигурации для конкретного хоста должны располагаться в /etc/opt. Более подробно это описано в разделе /etc.

    Остальные файлы пакетов не могут выходить за пределы иерархий /opt, /var/opt и /etc/opt, за исключением случаев, когда для корректной работы файлы должны находиться в определенных местах файловой системы. Например, файлы блокировки устройств должны быть в /var/lock, а сами устройства — в /dev.

    Дистрибутивы могут устанавливать и управлять программным обеспечением в зарегистрированных подкаталогах /opt.

    Использование /opt для дополнительного ПО — стандартная практика в сообществе UNIX. В соответствии с бинарным интерфейсом приложений System V (третье издание) от AT&T (1990), структура /opt аналогична описанной здесь.

    Аналогичную структуру для /opt предусматривает и стандарт двоичной совместимости Intel версии 2 (iBCS2).

    Все данные, необходимые для поддержки пакета, должны находиться в /opt/<package>. Это включает файлы, которые нужно скопировать в /etc/opt/<package> и /var/opt/<package>, а также зарезервированные каталоги в /opt.

    Ограничения для дистрибутивов, использующих /opt, необходимы из-за возможных конфликтов между программным обеспечением, установленным системой и локально. Особенно это актуально для фиксированных путей в некоторых бинарных программах.

    Структура каталогов ниже /opt/<provider> зависит от разработчика, хотя рекомендуется размещать пакеты в /opt/<provider>/<package>. Допустимо отклонение от этой структуры, если файлы поддержки находятся в /opt/<provider>/lib или /opt/<provider>/bin.

    /root: домашний каталог пользователя root (необязательно)

    Домашний каталог учетной записи root может быть определен разработчиком или выбран по предпочтениям, но по умолчанию рекомендуется использовать именно это расположение.

    /run: данные переменных среды выполнения

    Этот каталог включает системные данные, которые описывают состояние системы с момента её загрузки. Перед началом загрузки рекомендуется удалить или обрезать файлы в этом каталоге.

    Первоначальные функции этого каталога теперь выполняет каталог /var/run. Программы могут продолжать использовать /var/run для соответствия требованиям, предъявляемым к /run, что обеспечивает обратную совместимость. Однако программы, перешедшие на /run, должны перестать использовать /var/run, за исключением случаев, описанных в разделе о /var/run.

    Для программ, использующих несколько исполняемых файлов, рекомендуется создать подкаталог в /run. Пользователи также могут иметь подкаталог /run, но права доступа к нему должны быть ограничены, чтобы предотвратить несанкционированный доступ к /run и его подкаталогам.

    Файлы идентификаторов процессов (PID), ранее находившиеся в /etc, теперь размещаются в /run. Файлы PID должны иметь формат <program-name>.pid. Например, PID для crond хранится в /run/crond.pid.

    Структура файлов PID остаётся прежней. Файл содержит идентификатор процесса в десятичной форме в кодировке ASCII, за которым следует символ новой строки. Если, например, crond имеет идентификатор 25, то /run/crond.pid будет содержать два символа: два, пять и символ новой строки.

    Программы, которые читают PID-файлы, должны быть гибкими и игнорировать лишние пробелы, ведущие нули, отсутствие завершающего символа новой строки и дополнительные строки в файле. Программы, создающие PID-файлы, должны следовать указанной спецификации.

    Системные программы, работающие с временными сокетами UNIX-домена, должны размещать их в этом каталоге или его подкаталогах, как указано выше.

    /sbin: системные двоичные файлы

    Утилиты для системного администрирования, а также команды, доступные только пользователю root, размещаются в каталогах /sbin, /usr/sbin и /usr/local/sbin. В каталоге /sbin находятся двоичные файлы, необходимые для загрузки, восстановления и ремонта системы, а также дополнительные файлы из /bin. Программы, которые запускаются после монтирования /usr (при отсутствии проблем), обычно располагаются в /usr/sbin. Локальные программы для системного администрирования следует размещать в /usr/local/sbin.

    В каталоге /sbin не должно быть подкаталогов.

    В /sbin обязательно должны присутствовать следующие команды или символические ссылки на них:

    Если установлена соответствующая подсистема, в /sbin должны находиться следующие файлы или символические ссылки на них:

     fastboot Перезагрузите систему, не проверяя диски (необязательно)

    fasthalt Остановите систему, не проверяя диски (необязательно)

    fdisk Манипулятор для разделения таблиц (опционально)

    fsck Утилита для проверки и восстановления файловой системы (необязательно)

    fsck.* Утилита для проверки и восстановления файловой системы для конкретной файловой системы (необязательно)

    getty Программа getty (по желанию)

    halt Команда для остановки системы (необязательно)

    ifconfig Настройка сетевого интерфейса (необязательно)

    init Начальный процесс (необязательно)

    mkfs Команда для создания файловой системы (необязательно)

    mkfs.* Команда для создания определенной файловой системы (необязательно)

    mkswap Команда для настройки области подкачки (необязательно)

    reboot Команда для перезагрузки системы (необязательно)

    route Утилита для работы с таблицей IP-маршрутизации (необязательно)

    swapon Включите разбиение на страницы и подкачку (необязательно)

    swapoff Отключите разбиение на страницы и подкачку (необязательно)

    update Демон для периодической очистки буферов файловой системы (необязательно)

    /srv: данные для сервисов, предоставляемых этой системой

     /srv содержит данные о конкретном объекте, которые обрабатываются этой системой.

    Обоснование Основная цель указания этого параметра — помочь пользователям найти расположение файлов с данными для конкретной службы, а также обеспечить разумное размещение служб, которым требуется единое дерево для данных, доступных только для чтения, данных, доступных для записи, и скриптов (например, CGI-скриптов). Данные, которые представляют интерес только для конкретного пользователя, должны находиться в его домашнем каталоге. Есликаталог и файловая структура данных не предназначены для пользователей, их следует хранить в /var/lib.

    Метод именования подкаталогов в /srv не определен, поскольку в настоящее время нет единого мнения о том, как это следует делать. Один из способов структурирования данных в /srv — по протоколу, например ftp, rsync, www и cvs. В больших системах может быть полезно структурировать /srv по административному контексту, например /srv/physics/www, /srv/compsci/cvs и т. д. Такая структура может отличаться в зависимости от хоста. Таким образом, ни одна программа не должна полагаться на конкретную структуру подкаталогов /srv или на то, что данные обязательно хранятся в /srv. Однако /srv всегда должен существовать в системах, соответствующих стандарту FHS, и использоваться в качестве стандартного расположения для таких данных.

    Необходимо следить за тем, чтобы локально размещенные файлы в этих каталогах не удалялись без разрешения администратора

    /tmp: временные файлы

    Каталог /tmp предназначен для временного хранения файлов, необходимых программам.

    Программы не должны рассчитывать на сохранение файлов или каталогов в /tmp между своими запусками.

    В стандарте IEEE POSIX.1-2008 содержатся аналогичные требования.

    Хотя данные в /tmp могут быть удалены в зависимости от политики конкретного сайта, рекомендуется очищать содержимое /tmp при каждой загрузке системы.

    Эта рекомендация была добавлена в FHS на основе исторического опыта и общепринятой практики, но не стала обязательной, так как системное администрирование выходит за рамки применения данного стандарта.

    Иерархия /usr

    /usr — это второй ключевой раздел файловой системы, предназначенный для хранения общих данных, доступных только для чтения. Это позволяет использовать его на различных хостах, совместимых с FHS, без возможности внесения изменений. Любые данные, которые зависят от конкретного хоста или меняются со временем, размещаются в других разделах.

    Крупные программные пакеты не должны располагаться в прямых подкаталогах иерархии /usr.

    Для /usr обязательны следующие каталоги или символические ссылки на них:

    bin — место для большинства пользовательских команд.

    lib — содержит библиотеки.

    local — локальная иерархия (остаётся пустой после основной установки).

    sbin — второстепенные системные двоичные файлы.

    share — данные, не зависящие от архитектуры.

    games — игры и обучающие бинарные файлы (необязательны).

    include — заголовочные файлы для программ на языке C.

    libexec — двоичные файлы, запускаемые другими программами (необязательны).

    lib<qual> — библиотеки альтернативных форматов (необязательны).

    src — исходный код (необязателен). Исключение сделано для системы X Window из-за множества прецедентов и устоявшейся практики.

    Также могут присутствовать следующие символические ссылки на каталоги:

    /usr/spool → /var/spool

    /usr/tmp → /var/tmp

    /usr/spool/locks → /var/lock

    Если система больше не нуждается в одной из этих символических ссылок, её можно удалить.