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

Структура файловой системы Linux

Файловая система в ОС Linux, как и в ОС Windows, представляет собой иерархическую структуру каталогов и файлов (в виде дерева), но при этом имеет ряд кардинальных отличий.

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

В ОС Windows жесткие диски называются латинскими буквами (С:, D:, …), и каждый из дисков представляет собой корневой каталог с собственным деревом папок. Подключение же нового устройства приведет к появлению нового корневого каталога со своей буквой (например, F:). В ОС Linux файловая система представлена единым корневым каталогом, обозначаемым как слэш (/). Соответственно, при данной файловой структуре не диски содержат каталоги, а каталог — диски.

Подключение внешних носителей

В ОС Linux имеется процедура монтирования: когда подключается съемный носитель или диск, файл устройства будет виден в каталоге /dev (devices). Чтобы увидеть содержимое этого устройства, его нужно смонтировать в отдельную директорию /mnt. Также файловая система позволяет примонтировать его и в любое другое место, например /home.

Понятие файла

Понятие «файл» в Linux имеет несколько другое значение, нежели в Windows. «Файлом» можно назвать обычный файл, содержащий данные, и интерпретируемый программой. Директория также является «файлом», содержащим в себе ссылки на другие директории или файлы с данными. Файлы устройства указывает на драйвер, благодаря которому система взаимодействует с физическими устройствами. Имеются и многие другие типы файлов.

Принцип установки программ

Если в Windows программы, зачастую, хранят все данные в одной папке, например в «C:Program FilesProgramName», то в Linux файлы программы разделяются по каталогам в зависимости от типа. Например, исполняемые файлы в /bin, библиотеки в /lib, файлы конфигураций в /etc, логи и кэш в /var.

Регистр имен

Также стоит отметить чувствительность файловой системы Linux к регистру. Файлы Temp.txt и temp.txt будут интерпретироваться как разные файлы и могут находиться в одной директории, в отличие от ОС Windows, который не различает регистр имен. То же правило действует и на каталоги — имена в разных регистрах указывают на разные каталоги.

Назначение каждой директории регламентирует «Стандарт иерархии файловой системы» FHS (Filesystem Hierarchy Standard). Ниже опишем основные директории согласно стандарту FHS:

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

  • / — root каталог. Содержит в себе всю иерархию системы;
  • /bin — здесь находятся двоичные исполняемые файлы. Основные общие команды, хранящиеся отдельно от других программ в системе (прим.: pwd, ls, cat, ps);
  • /boot — тут расположены файлы, используемые для загрузки системы (образ initrd, ядро vmlinuz);
  • /dev — в данной директории располагаются файлы устройств (драйверов). С помощью этих файлов можно взаимодействовать с устройствами. К примеру, если это жесткий диск, можно подключить его к файловой системе. В файл принтера же можно написать напрямую и отправить задание на печать;
  • /etc — в этой директории находятся файлы конфигураций программ. Эти файлы позволяют настраивать системы, сервисы, скрипты системных демонов;
  • /home — каталог, аналогичный каталогу Users в Windows. Содержит домашние каталоги учетных записей пользователей (кроме root). При создании нового пользователя здесь создается одноименный каталог с аналогичным именем и хранит личные файлы этого пользователя;
  • /lib — содержит системные библиотеки, с которыми работают программы и модули ядра;
  • /lost+found — содержит файлы, восстановленные после сбоя работы системы. Система проведет проверку после сбоя и найденные файлы можно будет посмотреть в данном каталоге;
  • /media — точка монтирования внешних носителей. Например, когда вы вставляете диск в дисковод, он будет автоматически смонтирован в директорию /media/cdrom;
  • /mnt — точка временного монтирования. Файловые системы подключаемых устройств обычно монтируются в этот каталог для временного использования;
  • /opt — тут расположены дополнительные (необязательные) приложения. Такие программы обычно не подчиняются принятой иерархии и хранят свои файлы в одном подкаталоге (бинарные, библиотеки, конфигурации);
  • /proc — содержит файлы, хранящие информацию о запущенных процессах и о состоянии ядра ОС;
  • /root — директория, которая содержит файлы и личные настройки суперпользователя;
  • /run — содержит файлы состояния приложений. Например, PID-файлы или UNIX-сокеты;
  • /sbin — аналогично /bin содержит бинарные файлы. Утилиты нужны для настройки и администрирования системы суперпользователем;
  • /srv — содержит файлы сервисов, предоставляемых сервером (прим. FTP или Apache HTTP);
  • /sys — содержит данные непосредственно о системе. Тут можно узнать информацию о ядре, драйверах и устройствах;
  • /tmp — содержит временные файлы. Данные файлы доступны всем пользователям на чтение и запись. Стоит отметить, что данный каталог очищается при перезагрузке;
  • /usr — содержит пользовательские приложения и утилиты второго уровня, используемые пользователями, а не системой. Содержимое доступно только для чтения (кроме root). Каталог имеет вторичную иерархию и похож на корневой;
  • /var — содержит переменные файлы. Имеет подкаталоги, отвечающие за отдельные переменные. Например, логи будут храниться в /var/log, кэш в /var/cache, очереди заданий в /var/spool/ и так далее.
Читайте также:  Use linux if available

Источник

Sysadminium

На этом уроке разберём «Единое дерево каталогов» и стандарт File Hierarchy Standard в Linux. Это действительно очень важная тема!

Единое дерево каталогов

В Linux нет привычных для пользователя Windows дисков, например диск C:\ или диск D:\. Вместо этого в Linux существует единое дерево каталогов. Корневой каталог называется «root» и обозначается так «/».

Получается примерно такая древовидная структура каталогов:

/ /каталог_1 /каталог_1/подкаталог_1 /каталог_1/подкаталог_2 /каталог_1/подкаталог_2/подкаталог_1 /каталог_1/подкаталог_3 /каталог_2 /каталог_2/подкаталог_1 /каталог_2/подкаталог_2 /каталог_2/подкаталог_3/подкаталог_1/подкаталог_1 /каталог_2/подкаталог_3/подкаталог_1 /каталог_3 /каталог_3/подкаталог_1 /каталог_3/подкаталог_2 /каталог_3/подкаталог_3

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

Диск_1 / /каталог_1 /каталог_1/подкаталог_1 /каталог_1/подкаталог_2 /каталог_1/подкаталог_2/подкаталог /каталог_1/подкаталог_3 Диск_2 /каталог_2 /каталог_2/подкаталог_1 /каталог_2/подкаталог_2 /каталог_2/подкаталог_3 Диск_3 /каталог_2/подкаталог_3/подкаталог_1 /каталог_3 /каталог_3/подкаталог_1 /каталог_3/подкаталог_2 /каталог_3/подкаталог_3

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

Но /каталог_2 со всеми своими подкаталогами лежит на диске_2, кроме подкаталога /каталог_2/подкаталог_3/подкаталог_1.

Подкаталог /каталог_2/подкаталог_3/подкаталог_1 лежит на диске_3.

А /каталог_3 со всеми своими подкаталогами лежит на диске_1, так как для него нет отдельного диска или раздела.

Стандарт FHS

Linux дистрибутивы стараются придерживаться стандарта FHS (Filesystem Hierarchy Standard). Этот стандарт описывает как должна выглядеть структура каталогов, то есть по какому пути система будет искать определенные файлы. Например, программы будут лежать в одном каталоге, а библиотеки для этих программ в другом каталоге. И программа будет знать в каком каталоге искать библиотеку для своей работы, если программист создававший эту программу придерживался этого стандарта.

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

Читайте также:  Run blender on linux

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

По этому стандарту структура каталогов выглядит так:

  • / — корневой каталог
  • /bin — основные утилиты, которые могут использовать как обычные пользователи так и системные администраторы, но которые необходимы когда не смонтированы другие файловые системы;
  • /boot — файлы нужные для загрузки системы;
  • /dev — файлы устройств;
  • /etc — конфигурационные файлы;
  • /home — домашние каталоги обычных пользователей;
  • /lib — библиотеки для программ из каталогов /bin и /sbin и модули ядра;
  • /media — точки монтирования для сменных носителей;
  • /mnt — точки монтирования для временного монтирования;
  • /opt — дополнительное программное обеспечение;
  • /proc — псевдофайловая система, показывает состояние ядра и запущенные процессы в системе;
  • /root — домашний каталог пользователя root;
  • /run — псевдофайловая система, показывает данные, относящиеся к запущенным процессам;
  • /sbin — системные программы, которые может выполнять только суперпользователь;
  • /srv — данные для сервисов предоставляемых системой;
  • /sys — псевдофайловая система, показывает устройства и драйверы;
  • /tmp — временные файлы, которые не сохраняются после перезагрузки;
  • /usr — вторичная иерархия, например /usr/bin и /usr/sbin — дополнительные программы, а /usr/lib — библиотеки для этих программ;
  • /var — изменяемые файлы (логи, базы данных, почтовые файлы), в этом же каталоге есть /var/tmp — временные файлы, которые должны быть сохранены после перезагрузки.

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

Чтобы увидеть структуру каталогов можно воспользоваться утилитой tree. Но в Ubuntu её вначале нужно установить, для установки программы выполните команду:

alex@ubuntu:~$ sudo apt install tree

Затем выполните команду tree с опциями -d -L1 и укажите что нужно построить дерево каталогов от корня «/«:

alex@ubuntu:~$ tree -d -L 1 / / ├── bin -> usr/bin ├── boot ├── dev ├── etc ├── home ├── lib -> usr/lib ├── lib32 -> usr/lib32 ├── lib64 -> usr/lib64 ├── libx32 -> usr/libx32 ├── lost+found ├── media ├── mnt ├── opt ├── proc ├── root ├── run ├── sbin -> usr/sbin ├── snap ├── srv ├── sys ├── tmp ├── usr └── var 23 directories

Опция -d — говорит что нужно выводить только каталоги, а опция -L 1 — что нужно показать только 1 уровень подкаталогов и не нужно спускаться ниже.

Читайте также:  Linux mint lmde nvidia

Структура каталогов очень похожа на стандарт FHS, но есть несколько дополнительных каталогов:

  • /lib32 и /lib64 — так как каталог /lib содержит библиотеки только для программ из каталогов /bin и /sbin и модули ядра, то в этих каталогах лежат все остальные библиотеки. Причем в каталоге /lib32 — 32-разрядные, а в /lib64 — 64-разрядные;
  • /libx32 — а здесь лежат библиотеки для архитектуры x32;
  • /lost+found — этот каталог использует утилита fsck. Утилита используется для проверки файловой системы. Если эта утилита в ходе проверки находит данные в файловой системе, которые повреждены или не имеют имени, то такие файлы помещаются в этот каталог.
  • /snap — программы в Linux устанавливаются по разному. Один из способов, это использовать snap-пакеты. При этом устанавливаемая из snap программа будет помещена в каталог /snap.

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

В Debian тоже придется установить программу tree, но здесь по умолчанию нет sudo, поэтому для установки нужно выполнить следующие команды:

alex@deb-11:~$ su - Пароль: root@deb-11:~# apt install tree root@deb-11:~# exit

Если помните, то при установке Debian мы придумывали пароль вначале для суперпользователя root, а затем создавали своего пользователя alex. Здесь, первым шагом мы переключаемся на root пользователя и вводим пароль от него. Под ним (обратите внимание $ поменялось на #, об это я рассказывал в прошлой статье) выполняем установку приложения tree и выходим. Полностью установку программ мы разберем на следующих уроках!

Затем выполним уже знакомую команду tree:

alex@deb-11:~$ tree -d -L 1 / / ├── bin -> usr/bin ├── boot ├── dev ├── etc ├── home ├── lib -> usr/lib ├── lib32 -> usr/lib32 ├── lib64 -> usr/lib64 ├── libx32 -> usr/libx32 ├── lost+found ├── media ├── mnt ├── opt ├── proc ├── root ├── run ├── sbin -> usr/sbin ├── srv ├── sys ├── tmp ├── usr └── var 22 directories

Здесь все очень похоже на Ubuntu 22.04, но отсутствует каталог /snap. Так как snap по умолчанию в Debian 11 не используется.

Источник

Оцените статью
Adblock
detector