Блог

  • Директория /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

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

  • Директория /tmp: временные файлы

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

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

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

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

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

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

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

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

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

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

  • Директория /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 Демон для периодической очистки буферов файловой системы (необязательно)

  • Директория /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-домена, должны размещать их в этом каталоге или его подкаталогах, как указано выше.

  • Директория /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.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • Поддиректории /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 содержит ссылки на все централизованные каталоги.