Файловая система Linux: иерархия и ключевые директории

TIP

Эта статья — часть серии Linux administration, посвящённой самостоятельному администрированию Linux, Self-Hosting и DevOps. Здесь мы разбираем структуру файловой системы.

📌 О чём эта статья?

Если вы только начинаете работать с Linux, файловая система может показаться запутанной. В отличие от Windows с её дисками C:\, D:\, Linux использует единую иерархическую структуру, где всё начинается с корня /.

В этой статье мы подробно разберём:

  • Что такое Filesystem Hierarchy Standard (FHS)
  • Назначение ключевых директорий: /bin, /etc, /var, /home и других
  • Где хранятся программы, конфиги, логи и пользовательские данные
  • Практические примеры и советы по работе с файловой системой

🧩 Что такое FHS?

Filesystem Hierarchy Standard (FHS) — это стандарт, определяющий структуру и содержимое директорий в Linux-системах. Он поддерживается Linux Foundation и используется большинством дистрибутивов: Debian, Ubuntu, Fedora, Arch и другими.

NOTE

FHS обеспечивает совместимость между дистрибутивами и упрощает разработку программ, скриптов и системных инструментов.
📚 Официальная спецификация: FHS 3.0 (2015)


🌲 Иерархия файловой системы: корень и ключевые директории

Вот как выглядит типичная структура корневой директории:

/
├── bin/
├── boot/
├── dev/
├── etc/
├── home/
├── lib/
├── media/
├── mnt/
├── opt/
├── proc/
├── root/
├── run/
├── sbin/
├── srv/
├── tmp/
├── usr/
└── var/

Разберём каждую из них.


📁 / — Корневая директория

Начало всей файловой системы. Все остальные директории “подключены” к ней.
Важно: не путать с домашней директорией root-пользователя (/root).


📁 /bin — Основные исполняемые файлы

Содержит базовые команды, необходимые для минимальной работы системы:

  • ls, cp, mv, rm
  • bash, cat, grep, chmod

INFO

В современных системах /bin часто является символической ссылкой на /usr/bin.
Это часть инициативы UsrMerge — унификации /usr и корневых директорий.
📚 Подробнее: systemd wiki — UsrMerge


📁 /boot — Загрузочные файлы

Содержит всё необходимое для загрузки системы:

  • Ядро Linux: vmlinuz-*
  • Загрузчик: grub/
  • Initramfs: initrd.img-*

WARNING

Не удаляйте файлы в /boot вручную! Используйте apt autoremove или dnf autoremove для очистки старых ядер.


📁 /dev — Файлы устройств

Содержит устройства, представленные как файлы:

  • /dev/sda — первый жёсткий диск
  • /dev/ttyUSB0 — последовательный порт
  • /dev/null — “чёрная дыра” (всё, что туда пишется, исчезает)
  • /dev/zero — бесконечный поток нулей

EXAMPLE

cat /dev/zero > /tmp/testfile  # Создаст файл, пока не закончится место

📁 /etc — Конфигурационные файлы

Центр хранения настроек системы и приложений:

  • /etc/passwd — список пользователей
  • /etc/fstab — таблица точек монтирования
  • /etc/ssh/sshd_config — настройки SSH-сервера
  • /etc/nginx/nginx.conf — конфиг Nginx

TIP

Перед изменением файла в /etc всегда делайте резервную копию:

sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak

📁 /home — Домашние директории пользователей

Каждый пользователь имеет свою директорию:

  • /home/alex
  • /home/maria

Содержит:

  • Личные файлы
  • Конфиги приложений (скрытые: ~/.config/, ~/.ssh/)
  • Рабочие проекты

INFO

Домашняя директория root — /root, а не /home/root.


📁 /lib и /lib64 — Системные библиотеки

Содержит библиотеки, необходимые для запуска программ из /bin и /sbin.

  • /lib — 32-битные библиотеки
  • /lib64 — 64-битные (на современных системах)

Пример: libc.so.6 — стандартная C-библиотека (glibc).


📁 /media и /mnt — Точки монтирования

/media

Автоматически монтируемые устройства:

  • USB-флешки: /media/user/USB-DRIVE
  • CD/DVD

/mnt

Ручное временное монтирование:

sudo mount /dev/sdb1 /mnt/backup

TIP

/mnt удобно использовать для временного доступа к дискам или сетевым шарам.


📁 /opt — Дополнительные приложения

Для сторонних программ, не входящих в репозитории:

  • Google Chrome
  • Docker (в некоторых дистрибутивах)
  • Proprietary software

Каждое приложение обычно создаёт свою поддиректорию: /opt/google/chrome/.


📁 /proc — Виртуальная файловая система процессов

Не занимает места на диске — это виртуальная ФС, отображающая состояние ядра и процессов.

Примеры:

  • /proc/cpuinfo — информация о процессоре
  • /proc/meminfo — объём памяти
  • /proc/1/cmdline — команда, запустившая процесс с PID=1
  • /proc/sys/net/ipv4/ip_forward — управление IP-форвардингом

EXAMPLE

Включить IP-форвардинг:

echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward

📁 /root — Домашняя директория суперпользователя

Не в /home, а отдельно — для безопасности и доступности даже при незагруженном /home.


📁 /run — Временные файлы времени выполнения

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

  • PID-файлы служб: /run/nginx.pid
  • Сокеты: /run/systemd/
  • Временные данные после загрузки

Очищается при перезагрузке.


📁 /sbin — Системные исполняемые файлы

Содержит команды для администратора:

  • fdisk — разметка дисков
  • iptables — настройка firewall
  • reboot, halt
  • init

Как и /bin, в современных системах часто символически ссылается на /usr/sbin.


📁 /srv — Данные сервисов

Предназначена для хранения данных, предоставляемых системой:

  • /srv/http — веб-файлы (вместо /var/www)
  • /srv/ftp — файлы для FTP
  • /srv/git — репозитории Git

INFO

Использование /srv рекомендуется по FHS, но не все приложения его используют.


📁 /tmp — Временные файлы

Общее хранилище временных данных.

  • Очищается при перезагрузке (в большинстве дистрибутивов)
  • Доступен всем пользователям

WARNING

Никогда не храните важные данные в /tmp!


📁 /usr — Пользовательские программы и данные

Одна из самых больших директорий. Содержит:

  • /usr/bin — основные пользовательские программы
  • /usr/sbin — системные утилиты
  • /usr/lib — библиотеки
  • /usr/local — программы, установленные вручную
  • /usr/share — архитектурно-независимые данные (документация, иконки)
  • /usr/include — заголовочные файлы (для разработки)

NOTE

/usr — это read-only часть системы в некоторых дистрибутивах (например, Fedora Silverblue).


📁 /var — Переменные данные

Содержит файлы, которые меняются во время работы системы:

  • /var/log — логи (самое важное!)
  • /var/cache — кэш приложений
  • /var/lib — состояние пакетов, базы данных (например, Docker)
  • /var/spool — очереди (почта, задания cron)
  • /var/run → символическая ссылка на /run

🔹 Пример: работа с логами

tail -f /var/log/syslog          # Ubuntu/Debian
tail -f /var/log/messages        # CentOS/RHEL
journalctl -f                    # systemd-логи

🔄 Современные тенденции: UsrMerge и systemd

Современные дистрибутивы (начиная с Fedora 17, Debian 10, Ubuntu 20.04) поддерживают UsrMerge — слияние /bin, /sbin, /lib в /usr.

Результат:

/bin /usr/bin   (символическая ссылка)
/sbin /usr/sbin
/lib /usr/lib

INFO

Это упрощает обслуживание и делает систему более согласованной.
📚 systemd — UsrMerge FAQ


🛠️ Полезные команды для изучения ФС

tree -L 1 /            # Показать корневые директории (установка: apt install tree)
find /etc -name "*.conf"  # Найти конфиги
df -h                  # Показать использование дисков
lsblk                  # Показать блочные устройства
mount | grep "^/"      # Показать смонтированные корневые ФС

📚 Рекомендуемые ресурсы


✅ Заключение

Понимание иерархии файловой системы — фундамент Linux-администрирования. Теперь вы знаете:

  • Где искать конфиги, логи, программы
  • Как устроена структура /, /usr, /var
  • Что такое FHS и зачем он нужен

QUOTE

“В Linux всё — файл.”
— Дуглас Т. Макилрой

Источники: linuxfoundation.org, freedesktop.org, archwiki.org, tldp.org