Interested Article - FHS

FHS ( англ. Filesystem Hierarchy Standard , «стандарт иерархии файловой системы») — стандарт, унифицирующий местонахождение файлов и каталогов с общим назначением в файловой системе UNIX . На данный момент большинство UNIX-подобных систем в той или иной степени следует этим правилам. Например, обычная база данных о пользователях всегда хранится в файле /etc/passwd .

Текущая версия стандарта — 3.0, анонсирована 3 июня 2015 года.

Для получения справки об используемой в ОС системе каталогов иногда существует команда hier либо man hier.

Основные сведения

Процесс разработки стандарта иерархии файловой системы начался в августе 1993 года с попыток упорядочить структуру каталогов и файлов в операционной системе GNU/Linux . 14 февраля 1994 года был выпущен FSSTND ( Filesystem Standard ), стандарт файловой системы, специфичной для GNU/Linux. Последующие версии были выпущены 9 октября 1994 года и 28 марта 1995 года.

В начале 1996 года сообщество разработчиков BSD присоединилось к разработке новой версии с целью разработать стандарт, пригодный для всех UNIX-подобных операционных систем. Имя стандарта при этом было изменено на Filesystem Hierarchy Standard .

FHS поддерживается Free Standards Group — некоммерческой организацией, в составе которой находятся крупные разработчики программного и аппаратного обеспечения , такие как HP , Red Hat , IBM и Dell . Однако основная часть разработчиков дистрибутивов, включая и тех, кто входит в состав Free Standards Group, не следует стандарту полностью. В частности, пути, специально созданные группой, такие как /srv , практически нигде не используются. Некоторые Linux-системы отвергают FHS и следуют своему собственному стандарту, как, например, GoboLinux .

Так как FHS начиналась как инициатива Linux-сообщества, другие UNIX и UNIX-подобные операционные системы полностью игнорируют её в пользу своих собственных систем, которые иногда распространены довольно широко. Например, Mac OS X использует такие имена, как /Library/ , /Applications/ и /Users/ вместе с традиционными именами UNIX-иерархии.

Структура каталогов

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

В FHS все файлы и каталоги находятся внутри корневого каталога, даже если они расположены на различных физических носителях. Однако некоторые из каталогов могут присутствовать только в случае, если установлено определённое программное обеспечение, такое как, например, X Window System . Большая часть этих каталогов существует во всех UNIX-подобных операционных системах и используется похожим образом.

Описание иерархии каталогов согласно FHS
Каталог Описание
/ Корневой каталог , содержащий всю файловую иерархию.
/bin
Основные утилиты , необходимые как в однопользовательском режиме, так и при обычной работе всем пользователям (например: cat , ls , cp ).
Загрузочные файлы (в том числе файлы загрузчика , ядро , initrd , System.map ). Часто выносится на отдельный раздел .
/dev
Основные файлы устройств (например, /dev/null , /dev/zero ).
/etc
Общесистемные (имя происходит от лат. et cetera ).
/etc/opt
Файлы конфигурации для .
/etc/X11
Файлы конфигурации X Window System версии 11.
/etc/sgml
Конфигурационные файлы SGML .
/etc/xml
Конфигурационные файлы XML .
/home
Содержит домашние каталоги пользователей , которые в свою очередь содержат персональные настройки и данные пользователя. Часто размещается на отдельном разделе.
Основные библиотеки , необходимые для работы программ из /bin и /sbin .
/media
Точки монтирования для сменных носителей, таких как CD-ROM , DVD-ROM (впервые описано в FHS-2.3 ).
/mnt
Содержит временно монтируемые файловые системы .
/opt
Дополнительное программное обеспечение .
/proc
Виртуальная файловая система , представляющая состояние ядра операционной системы и запущенных процессов в виде файлов .
/root
Домашний каталог пользователя root .
/run
Информация о системе с момента её загрузки, в том числе данные, необходимые для работы демонов (pid-файлы, UNIX-сокеты и т. д.) .
/sbin
Основные системные программы для администрирования и настройки системы, например, init , iptables , ifconfig .
/srv
Данные для сервисов, предоставляемых системой (например, www или ftp).
/sys
Содержит информацию об устройствах, драйверах, а также некоторых свойствах ядра.
/tmp
Временные файлы (см. также /var/tmp ).
/usr
Вторичная иерархия для данных пользователя . Содержит большинство пользовательских приложений и утилит , используемых в многопользовательском режиме. Может быть смонтирована по сети только для чтения и быть общей для нескольких машин .
/usr/bin
Дополнительные программы для всех пользователей, не являющиеся необходимыми в однопользовательском режиме.
/usr/include
Стандартные заголовочные файлы .
/usr/lib
Библиотеки для программ, находящихся в /usr/bin и /usr/sbin .
/usr/local
Третичная иерархия для данных, специфичных для данного хоста. Обычно содержит такие подкаталоги, как bin , lib , share .
/usr/sbin
Дополнительные системные программы (такие как демоны различных сетевых сервисов).
/usr/share
Архитектурно-независимые общие данные.
/usr/src
Исходные коды (например, здесь располагаются исходные коды ядра).
/var
Изменяемые файлы, такие как файлы регистрации , временные почтовые файлы, файлы .
/var/cache
Кэш приложений. Такие данные генерируются локально в результате ресурсозатратных вычислений или операций ввода-вывода. Приложение обязано уметь регенерировать эти данные. Данные файлы могут быть удалены без потери данных.
/var/lib
Информация о состоянии. Постоянные данные, изменяемые программами в процессе работы (например, базы данных, метаданные пакетного менеджера и др.).
/var/lock
Файлы блокировки, указывающие на занятость некоторого ресурса.
/var/log
Различные файлы регистрации .
/var/mail
Почтовые ящики пользователей.
/var/run
Каталог для хранения информации о системе с момента её загрузки, на данный момент устарел. Допускается делать его ссылкой на /run . Каталог оставлен для обратной совместимости с программами, которые всё ещё используют каталог /var/run .
/var/spool
Задачи, ожидающие обработки (например, очереди печати, непрочитанные или неотправленные письма).
/var/spool/mail
Местоположение пользовательских почтовых ящиков (устаревшее).
/var/tmp
Временные файлы, которые должны быть сохранены между перезагрузками.

Разделение на системные и пользовательские каталоги

Разделение на системные (например, /etc , /bin ) и пользовательские каталоги необходимо для следующих целей:

  • Упрощение резервного копирования . Системные файлы обычно просто установлены с дистрибутива и наибольшую ценность представляют личные файлы пользователя.
  • Безопасность. Обычно пользователь имеет доступ на запись только в домашний каталог, так что в случае запуска « червя » он не сможет заразить системные файлы.
  • Совместный доступ из разных ОС:
    • можно установить несколько систем на один компьютер, назначив им один домашний надкаталог;
    • можно хранить системные файлы на отдельном сервере, а на тонком клиенте хранить только каталог /home ;
    • можно обеспечить сотруднику доступ с любого компьютера фирмы, разместив каталог /home на сервере с домашними каталогами всех сотрудников.

Домашний каталог суперпользователя (root) находится в /root , а не в /home/root , так как учётная запись суперпользователя предназначена исключительно для администрирования операционной системы. Это помогает повысить надёжность системы: /root обычно располагается на том же разделе, где и система, что позволяет производить обслуживание и настройку операционной системы, смонтировав лишь корневой раздел.

Примечания

  1. . refspecs.linuxfoundation.org. Дата обращения: 19 марта 2018. 8 марта 2018 года.
  2. . Filesystem Hierarchy Standard . Дата обращения: 4 июня 2017. 1 июня 2017 года.
  3. от 25 мая 2005 на Wayback Machine (англ.)
  4. Исторически и строго следуя стандарту, /usr/local является хранилищем данных, которые должны храниться на локальном хосте (в противоположность /usr , которая может монтироваться по сети). Однако обычно /usr редко монтируется удалённо, а /usr/local чаще используется для установки программного обеспечения и данных, которые не являются частью дистрибутива (в этом случае /usr должен содержать программы и данные только из стандартного дистрибутива). Возможно, в будущем стандарт FHS будет изменён для отражения этой устоявшейся ситуации.
  5. . refspecs.linuxfoundation.org. Дата обращения: 19 марта 2018. 4 февраля 2018 года.

Ссылки

  • (англ.)
  • (англ.) (3 июня 2015)
  • (англ.) (29 января 2004)
  • (рус.)
  • (рус.)
  • Крис Браун. // Linux Format . — 2007. — Август ( № 95 ). — С. 48—51 .
Источник —

Same as FHS