Структура файловой системы Linux
Расположение файлов и директорий в Linux регулируется стандартом
Filesystem Hierarchy Standard (FHS). Текущая версия стандарта — 3.0 от 3 июня 2015 года.
При этом следует понимать, что FHS, хоть и является основанным на POSIX, но разрабатывался исключительно для Linux и другие UNIX-системы следовать ему не обязаны.
Также далеко не все дистрибутивы полностью следуют этому стандарту, допуская различные отклонения, но, в общем и целом, основные положения соблюдаются.
Начинается файловая система с корня, который обозначается обратной косой чертой -
/
Директория
/bin содержит бинарные (исполняемые) файлы пользовательского уровня, для выполнения которых не нужны права суперпользователя, например,
cat, find или
ls.
/boot – загрузчик и все что с ним связано
В Linux все есть файл, даже устройства. Поэтому мы всегда можем их найти в директории
/dev, например, блочные устройства
/dev/sda или виртуальное устройство
/dev/null.
/etc – конфигурационные файлы
/home – домашние директории пользователей, для каждого пользователя в данном каталоге создается собственная поддиректория:
/home/Ivanov или
/home/petrov
Для хранения библиотек программ предназначена директория
/lib, в современных системах, в зависимости от поддерживаемых архитектур это целый набор директорий, таких как
lib32, lib64 и т.п.
/lost+found, как следует из названия, хранит найденные файлы, которые не относятся ни к одной директории, но их inode не помечены как свободные. Т.е. если во время проверки файловой системы будут найдены такие файлы, то система поместит их сюда.
/media используется для автоматического монтирования съемных носителей, таких как флешки, USB или оптические диски.
/mnt – а вот сюда мы можем монтировать нужные устройства вручную. Например, можем примонтировать дополнительный диск для общего хранилища:
/mnt/samba и т.д.
/opt – дополнительное программное обеспечение, чаще всего проприетарное, или имеющее большой дисковый размер.
/proc – сюда смонтирована виртуальная файловая система
procfs, через «файлы» этой директории мы можем получить различную информацию от ядра системы. Скажем,
cat /proc/meminfo – информация об оперативной памяти.
/root – домашняя директория суперпользователя, всегда находится в корневом каталоге.
/run – файлы состояния приложений, такие как сокеты или PID-файлы
/sbin – исполняемые файлы, которые для своего запуска требуют права суперпользователя. В первую очередь к ним относятся служебные утилиты. Здесь мы можем найти
fdisk, sysctl, useradd и т.д.
/srv – стандарт предполагает хранение здесь данных сервисов, предоставляемых системой. На практике не используется.
/sys – место монтирования виртуальной файловой системы
sysfs, которая позволяет не только получать различные параметры ядра, но и передавать ему настройки через «запись» нужного параметра в определенный «файл», все измененные параметры действуют до перезагрузки.
/tmp – временные файлы
/usr – достаточно интересная директория, предназначена для хранения всех установленных пользователем программ, документации, исходного кода. Предполагается, что данная директория может быть доступна по сети.
В ней также содержатся директории
/usr/bin, /usr/sbin, /usr/lib и т.д.
Т.е. изначально предполагалось разделение на файлы самой системы и файлы, которые установил пользователь. Однако в большинстве современных систем директории
/bin, /sbin и все
/lib являются симлинками на одноименные директории в
/usr.
Отдельно стоит отметить
/usr/share, где располагаются различные общие ресурсы, такие как документация, примеры конфигурационных файлов, иконки и т.д.
А также
/usr/local, куда по умолчанию устанавливаются файлы программ, которые собраны из исходных кодов или получены иными путями в обход менеджера пакетов.
/var – файлы, которые изменяются при работе системы, например, логи -
/var/log, базы данных -
/var/lib, файлы обслуживаемые веб сервером -
/var/www.