Interested Article - FHS
- 2020-09-29
- 1
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-иерархии.
Структура каталогов
В FHS все файлы и каталоги находятся внутри корневого каталога, даже если они расположены на различных физических носителях. Однако некоторые из каталогов могут присутствовать только в случае, если установлено определённое программное обеспечение, такое как, например, X Window System . Большая часть этих каталогов существует во всех UNIX-подобных операционных системах и используется похожим образом.
Каталог | Описание |
---|---|
/
|
Корневой каталог , содержащий всю файловую иерархию. |
Основные утилиты , необходимые как в однопользовательском режиме, так и при обычной работе всем пользователям (например: cat , ls , cp ). | |
|
Загрузочные файлы (в том числе файлы
загрузчика
,
ядро
,
initrd
,
System.map
). Часто выносится на отдельный
раздел
.
|
Основные
файлы устройств
(например,
/dev/null
,
/dev/zero
).
|
|
Общесистемные (имя происходит от лат. et cetera ). | |
|
Файлы конфигурации для
.
|
|
Файлы конфигурации X Window System версии 11. |
|
Конфигурационные файлы SGML . |
|
Конфигурационные файлы XML . |
Содержит домашние каталоги пользователей , которые в свою очередь содержат персональные настройки и данные пользователя. Часто размещается на отдельном разделе. | |
|
Основные
библиотеки
, необходимые для работы программ из
/bin
и
/sbin
.
|
|
Точки монтирования для сменных носителей, таких как CD-ROM , DVD-ROM (впервые описано в FHS-2.3 ). |
|
Содержит временно монтируемые файловые системы . |
|
Дополнительное программное обеспечение . |
Виртуальная файловая система , представляющая состояние ядра операционной системы и запущенных процессов в виде файлов . | |
Домашний каталог пользователя root . | |
|
Информация о системе с момента её загрузки, в том числе данные, необходимые для работы демонов (pid-файлы, UNIX-сокеты и т. д.) . |
|
Основные системные программы для администрирования и настройки системы, например, init , iptables , ifconfig . |
|
Данные для сервисов, предоставляемых системой (например, www или ftp). |
|
Содержит информацию об устройствах, драйверах, а также некоторых свойствах ядра. |
|
Временные файлы
(см. также
/var/tmp
).
|
Вторичная иерархия для данных пользователя . Содержит большинство пользовательских приложений и утилит , используемых в многопользовательском режиме. Может быть смонтирована по сети только для чтения и быть общей для нескольких машин . | |
|
Дополнительные программы для всех пользователей, не являющиеся необходимыми в однопользовательском режиме. |
|
Стандартные заголовочные файлы . |
|
Библиотеки для программ, находящихся в
/usr/bin
и
/usr/sbin
.
|
|
Третичная иерархия
для данных, специфичных для данного хоста. Обычно содержит такие подкаталоги, как
bin
,
lib
,
share
.
|
|
Дополнительные системные программы (такие как демоны различных сетевых сервисов). |
|
Архитектурно-независимые общие данные. |
|
Исходные коды (например, здесь располагаются исходные коды ядра). |
Изменяемые файлы, такие как файлы регистрации , временные почтовые файлы, файлы . | |
|
Кэш приложений. Такие данные генерируются локально в результате ресурсозатратных вычислений или операций ввода-вывода. Приложение обязано уметь регенерировать эти данные. Данные файлы могут быть удалены без потери данных. |
|
Информация о состоянии. Постоянные данные, изменяемые программами в процессе работы (например, базы данных, метаданные пакетного менеджера и др.). |
|
Файлы блокировки, указывающие на занятость некоторого ресурса. |
|
Различные файлы регистрации . |
|
Почтовые ящики пользователей. |
|
Каталог для хранения информации о системе с момента её загрузки, на данный момент устарел. Допускается делать его ссылкой на
/run
. Каталог оставлен для обратной совместимости с программами, которые всё ещё используют каталог
/var/run
.
|
|
Задачи, ожидающие обработки (например, очереди печати, непрочитанные или неотправленные письма). |
|
Местоположение пользовательских почтовых ящиков (устаревшее). |
|
Временные файлы, которые должны быть сохранены между перезагрузками. |
Разделение на системные и пользовательские каталоги
Разделение на системные (например, /etc , /bin ) и пользовательские каталоги необходимо для следующих целей:
- Упрощение резервного копирования . Системные файлы обычно просто установлены с дистрибутива и наибольшую ценность представляют личные файлы пользователя.
- Безопасность. Обычно пользователь имеет доступ на запись только в домашний каталог, так что в случае запуска « червя » он не сможет заразить системные файлы.
-
Совместный доступ из разных ОС:
- можно установить несколько систем на один компьютер, назначив им один домашний надкаталог;
- можно хранить системные файлы на отдельном сервере, а на тонком клиенте хранить только каталог /home ;
- можно обеспечить сотруднику доступ с любого компьютера фирмы, разместив каталог /home на сервере с домашними каталогами всех сотрудников.
Домашний каталог
суперпользователя
(root) находится в
/root
, а не в
/home/root
, так как
учётная запись
суперпользователя предназначена исключительно для администрирования операционной системы. Это помогает повысить надёжность системы:
/root
обычно располагается на том же разделе, где и система, что позволяет производить обслуживание и настройку операционной системы, смонтировав лишь корневой раздел.
Примечания
- . refspecs.linuxfoundation.org. Дата обращения: 19 марта 2018. 8 марта 2018 года.
- . Filesystem Hierarchy Standard . Дата обращения: 4 июня 2017. 1 июня 2017 года.
- от 25 мая 2005 на Wayback Machine (англ.)
-
Исторически и строго следуя стандарту,
/usr/local
является хранилищем данных, которые должны храниться на локальном хосте (в противоположность/usr
, которая может монтироваться по сети). Однако обычно/usr
редко монтируется удалённо, а/usr/local
чаще используется для установки программного обеспечения и данных, которые не являются частью дистрибутива (в этом случае/usr
должен содержать программы и данные только из стандартного дистрибутива). Возможно, в будущем стандарт FHS будет изменён для отражения этой устоявшейся ситуации. - . refspecs.linuxfoundation.org. Дата обращения: 19 марта 2018. 4 февраля 2018 года.
Ссылки
- (англ.)
- (англ.) (3 июня 2015)
- (англ.) (29 января 2004)
- (рус.)
- (рус.)
- Крис Браун. // Linux Format . — 2007. — Август ( № 95 ). — С. 48—51 .
- 2020-09-29
- 1