FHS (англ. Filesystem Hierarchy Standard, «стандарт иерархии файловой системы») — стандарт, унифицирующий местонахождение файлов и каталогов с общим назначением в файловой системе ОСLinux. На данный момент большинство UNIX-подобных систем в той или иной степени следует этим правилам[2]. Например, обычная база данных о пользователях всегда хранится в файле /etc/passwd.
FHS разрабатывает и публикует организация Linux Foundation[2].
Актуальная версия стандарта — 3.0, она анонсирована 3 июня 2015 года.
Для получения справки об используемой в ОС системе каталогов иногда существует команда hier либо man hier.
История
Процесс разработки стандарта иерархии файловой системы начался в августе 1993 года с попыток упорядочить структуру каталогов и файлов в операционной системе GNU/Linux.
14 февраля 1994 года Linux-активистами, координатором которых стал Дэниел Куинлан (англ. Daniel Quinlan), был выпущен FSSTND (акроним словосочетания Filesystem Standard), стандарт файловой системы, специфичной для GNU/Linux[3]. Последующие версии были выпущены 9 октября 1994 года и 28 марта 1995 года.
В начале 1996 года сообщество разработчиков BSD присоединилось к разработке новой версии FSSTND с целью разработать стандарт, пригодный для всех UNIX-подобных операционных систем. Имя стандарта при этом было изменено на Filesystem Hierarchy Standard (FHS).
Основные сведения
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 все файлы и каталоги находятся внутри корневого каталога[2], даже если они расположены на различных физических носителях. Однако некоторые из каталогов могут присутствовать только в случае, если установлено определённое программное обеспечение, такое как, например, X Window System.
Большая часть этих каталогов существует во всех UNIX-подобных операционных системах, в том числе BSD и MacOS и используется похожим образом[2].
Разделение на системные и пользовательские каталоги
Разделение на системные (например, /etc, /bin) и пользовательские каталоги необходимо для следующих целей:
- Упрощение резервного копирования. Системные файлы обычно просто установлены с дистрибутива и наибольшую ценность представляют личные файлы пользователя.
- Безопасность. Обычно пользователь имеет доступ на запись только в домашний каталог, так что в случае запуска «червя» он не сможет заразить системные файлы.
- Совместный доступ из разных ОС:
- можно установить несколько систем на один компьютер, назначив им один домашний надкаталог;
- можно хранить системные файлы на отдельном сервере, а на тонком клиенте хранить только каталог /home;
- можно обеспечить сотруднику доступ с любого компьютера фирмы, разместив каталог /home на сервере с домашними каталогами всех сотрудников.
Домашний каталог суперпользователя (root) находится в /root, а не в /home/root, так как учётная запись суперпользователя предназначена исключительно для администрирования операционной системы. Это помогает повысить надёжность системы: /root обычно располагается на том же разделе, где и система, что позволяет производить обслуживание и настройку операционной системы, смонтировав лишь корневой раздел.
Комментарии
- ↑Исторически и строго следуя стандарту,
/usr/localявляется хранилищем данных, которые должны храниться на локальном хосте в противоположность/usr, которая может монтироваться по сети. Однако обычно/usrредко монтируется удалённо, а/usr/localчаще используется для установки программного обеспечения и данных, которые не являются частью дистрибутива Linux (в этом случае/usrдолжен содержать программы и данные только из стандартного дистрибутива). Возможно, в будущем стандарт FHS будет изменён для отражения этой устоявшейся практики.
Примечания
- ↑https://refspecs.linuxfoundation.org/FHS_3.0/fhs-3.0.pdf
- ↑ 1234Prakash, 2023.
- ↑McCloghrie, 1994.
- ↑3.15. /run : Run-time variable data // Filesystem Hierarchy Standard : [англ.] : [арх. 8 марта 2018]. — Ver. 3.0. — The Linux Foundation, 2015. — 3 June.
- ↑/sys : Kernel and system information virtual filesystem // Filesystem Hierarchy Standard : [англ.] : [арх. 1 июня 2017]. — Ver. 3.0. — The Linux Foundation, 2015. — 3 June.
- ↑FHS2.3, 2004, 4.1. Purpose, p. 18.
- ↑5.13. /var/run : Run-time variable data // Filesystem Hierarchy Standard : [англ.] : [арх. 4 февраля 2018]. — Ver. 3.0. — The Linux Foundation, 2015. — 3 June.
Литература
- McCloghrie, I. FSSTND FAQ. — 1994. — 9 октября.
- Стандарт на структуру каталогов файловой системы. (Filesystem Hierarchy Standard) = Filesystem Hierarchy Standard, 2001 : [пер. с англ.] / Ред.: П. Рассел (Paul 'Rusty' Russell), Д. Квинлан (Daniel Quinlan) Filesystem Hierarchy Standard Group; пер.: В. А. Костромин // OpenNET. — 2003.
- Filesystem Hierarchy Standard : [англ.]. — Ver. 3.0. — The Linux Foundation, 2015. — 19 March. — [2]+v+43 p.
- Filesystem Hierarchy Standard : [англ.]. — Ver. 2.3. — The Linux Foundation, 2004. — 29 January. — [2]+vi+46 p.
- 3.2. Overview of File System Hierarchy Standard (FHS) // Red Hat Enterprise Linux 4 Reference Guide : [англ.]. — Red Hat.
- Браун, Крис. Тур по файловой системе Linux // Linux Format : журн. — 2007. — № 95 (август). — С. 48—51.
Ссылки
- pathname.com/fhs/ (англ.) — официальный сайт Filesystem Hierarchy Standard
- refspecs.linuxfoundation.org/fhs.shtml (англ.) — официальный сайт Filesystem Hierarchy Standard Linux Foundation
- Зарубин, И. Для чего нужен каждый каталог в Linux или структура директорий ОС Линукс // IT Shaman. — 2009. — 3 мая.
- Linux Directory Structure and File System Hierarchy : [англ.] // Linux Training Academy.
- Prakash, A. Linux Directory Structure Explained for Beginners : [англ.] // Linux Handbook. — 2023. — 19 October.
- 04-E.12.1: Linux Directory Structure - Hierarchy : [англ.] : [арх. 23 января 2022] // LibreTexts. — 2021. — 23 April.
