Понимание файловой системы Linux, структуры каталогов, размещения конфигурационных, исполняемых и временных файлов поможет вам лучше разбираться в своей системе и стать успешным системным администратором. Файловая система Linux будет непривычна именно для новичка, только что перешедшего с Windows, ведь здесь все совсем по-другому.
В отличие от Windows, программа не находится в одной папке, а, как правило, распределена по корневой файловой системе. Это распределение поддается определенным правилам. Вы когда-нибудь задавались вопросом, почему некоторые программы находятся в папке /bin, или /sbin, /usr/sbin, /usr/local/bin, в чем разница между этими каталогами?
Например, программа less, находится в каталоге /usr/bin, но почему не в /sbin или /usr/sbin. А такие программы, как ifconfig или fdisk находятся в каталоге /sbin и нигде иначе. В этой статье будет полностью рассмотрена структура файловой системы Linux, после ее прочтения вы сможете понять смысл использования большинства папок в корневом каталоге Linux.
/ - корень
Это главный каталог в системе Linux. По сути, это и есть файловая система Linux. Здесь нет дисков или чего-то подобного, как в Windows. Вместо этого, адреса всех файлов начинаются с корня, а дополнительные разделы, флешки или оптические диски подключаются в папки корневого каталога.
Только пользователь root имеет право читать и изменять файлы в этом каталоге. Обратите внимание, что у пользователя root домашний каталог /root, но не сам /.
/bin - (binaries) бинарные файлы пользователя
Этот каталог содержит исполняемые файлы. Здесь расположены программы, которые можно использовать в однопользовательском режиме или режиме восстановления. Одним словом, те утилиты, которые могут использоваться пока еще не подключен каталог /usr/. Это такие общие команды, как cat, ls, tail, ps и т д.
/sbin - (system binaries) системные исполняемые файлы
Так же как и /bin, содержит двоичные исполняемые файлы, которые доступны на ранних этапах загрузки, когда не примонтирован каталог /usr. Но здесь находятся программы, которые можно выполнять только с правами суперпользователя. Это разные утилиты для обслуживания системы. Например, iptables, reboot, fdisk, ifconfig,swapon и т д.
/etc - (etcetera) конфигурационные файлы
В этой папке содержатся конфигурационные файлы всех программ, установленных в системе. Кроме конфигурационных файлов, в системе инициализации Init Scripts, здесь находятся скрипты запуска и завершения системных демонов, монтирования файловых систем и автозагрузки программ. Структура каталогов linux в этой папке может быть немного запутанной, но предназначение всех их - настройка и конфигурация.
/dev - (devices) файлы устройств
В Linux все, в том числе внешние устройства являются файлами. Таким образом, все подключенные флешки, клавиатуры, микрофоны, камеры - это просто файлы в каталоге /dev/. Этот каталог содержит не совсем обычную файловую систему. Структура файловой системы Linux и содержащиеся в папке /dev файлы инициализируются при загрузке системы, сервисом udev. Выполняется сканирование всех подключенных устройств и создание для них специальных файлов. Это такие устройства, как: /dev/sda, /dev/sr0, /dev/tty1, /dev/usbmon0 и т д.
/proc - (proccess) информация о процессах
Это тоже не обычная файловая система, а виртуальная подсистема, динамически создаваемая ядром. Здесь содержится вся информация о запущенных процессах в реальном времени. По сути, это псевдофайловая система, содержащая подробную информацию о каждом процессе, его Pid, имя исполняемого файла, параметры запуска, доступ к оперативной памяти и так далее. Также здесь можно найти информацию об использовании системных ресурсов, например, /proc/cpuinfo, /proc/meminfo или /proc/uptime. Кроме файлов в этом каталоге есть большая структура папок linux, из которых можно узнать достаточно много информации о системе.
/var (variable) - Переменные файлы
Название каталога /var говорит само за себя, он должен содержать файлы, которые часто изменяются. Размер этих файлов постоянно увеличивается. Здесь содержатся файлы системных журналов, различные кеши, базы данных и так далее. Дальше рассмотрим назначение каталогов Linux в папке /var/.
/var/log - Файлы логов
Здесь содержатся большинство файлов логов всех программ, установленных в операционной системе. У многих программ есть свои подкаталоги в этой папке, например, /var/log/apache - логи веб-сервера, /var/log/squid - файлы журналов кеширующего сервера squid. Если в системе что-либо сломалось, скорее всего, ответы вы найдете здесь.
/var/lib - базы данных
Еще один тип изменяемых файлов - это файлы баз данных, пакеты, сохраненные пакетным менеджером и т д.
/var/mail - почта
В эту папку почтовый сервер складывает все полученные или отправленные электронные письма, здесь же могут находиться его логи и файлы конфигурации.
/var/spool - очереди
Изначально, эта папка отвечала за очереди печати на принтере и работу набора программ cups.
/var/lock - файлы блокировок
Здесь находятся файлы блокировок. Эти файлы означают, что определенный ресурс, файл или устройство занят и не может быть использован другим процессом. Apt-get, например, блокирует свою базу данных, чтобы другие программы не могли ее использовать, пока программа с ней работает.
/var/run - PID процессов
Содержит файлы с PID процессов, которые могут быть использованы, для взаимодействия между программами. В отличие от каталога /run данные сохраняются после перезагрузки.
/tmp (temp) - Временные файлы
В этом каталоге содержатся временные файлы, созданные системой, любыми программами или пользователями. Все пользователи имеют право записи в эту директорию.
Файлы удаляются при каждой перезагрузке. Аналогом Windows является папка Windows\Temp, здесь тоже хранятся все временные файлы.
/usr - (user applications) Программы пользователя
Это самый большой каталог с большим количеством функций. Тут наиболее большая структура каталогов Linux. Здесь находятся исполняемые файлы, исходники программ, различные ресурсы приложений, картинки, музыку и документацию.
/usr/bin/ - Исполняемые файлы
Содержит исполняемые файлы различных программ, которые не нужны на первых этапах загрузки системы, например, музыкальные плееры, графические редакторы, браузеры и так далее.
/usr/sbin/
Содержит двоичные файлы программ для системного администрирования, которые нужно выполнять с правами суперпользователя. Например, таких как Gparted, sshd, useradd, userdel и т д.
/usr/lib/ - Библиотеки
Содержит библиотеки для программ из /usr/bin или /usr/sbin.
/usr/local - Файлы пользователя
Содержит файлы программ, библиотек, и настроек созданные пользователем. Например, здесь могут храниться программы собранные и установленные из исходников и скрипты, написанные вручную.
/home - Домашняя папка
В этой папке хранятся домашние каталоги всех пользователей. В них они могут хранить свои личные файлы, настройки программ и т д. Например, /home/sergiy и т д. Если сравнивать с Windows, то это ваша папка пользователя на диске C, но в отличии от WIndows, home как правило размещается на отдельном разделе, поэтому при переустановке системы все ваши данные и настройки программ сохранятся.
/boot - Файлы загрузчика
Содержит все файлы, связанные с загрузчиком системы. Это ядро vmlinuz, образ initrd, а также файлы загрузчика, находящие в каталоге /boot/grub.
/lib (library) - Системные библиотеки
Содержит файлы системных библиотек, которые используются исполняемыми файлами в каталогах /bin и /sbin.
Библиотеки имеют имена файлов с расширением *.so и начинаются с префикса lib*. Например, libncurses.so.5.7. Папка /lib64 в 64 битных системах содержит 64 битные версии библиотек из /lib. Эту папку можно сравнить с WIndows\system32, там тоже сгружены все библиотеки системы, только там они лежат смешанные с исполняемыми файлами, а здесь все отдельно.
/opt (Optional applications) - Дополнительные программы
В эту папку устанавливаются проприетарные программы, игры или драйвера. Это программы созданные в виде отдельных исполняемых файлов самими производителями. Такие программы устанавливаются в под-каталоги /opt/, они очень похожи на программы Windows, все исполняемые файлы, библиотеки и файлы конфигурации находятся в одной папке.
/mnt (mount) - Монтирование
В этот каталог системные администраторы могут монтировать внешние или дополнительные файловые системы.
/media - Съемные носители
В этот каталог система монтирует все подключаемые внешние накопители - USB флешки, оптические диски и другие носители информации.
/srv (server) - Сервер
В этом каталоге содержатся файлы серверов и сервисов. Например, могут содержаться файлы веб-сервера apache.
/run - процессы
Еще один каталог, содержащий PID файлы процессов, похожий на /var/run, но в отличие от него, он размещен в TMPFS, а поэтому после перезагрузки все файлы теряются.
/sys (system) - Информация о системе
Назначение каталогов Linux из этой папки - получение информации о системе непосредственно от ядра. Это еще одна файловая система организуемая ядром и позволяющая просматривать и изменить многие параметры работы системы, например, работу swap, контролировать вентиляторы и многое другое.
Содержание статьи
Выводы
Теперь структура файловой системы Linux не кажется вам темным лесом. Конечно еще есть с чем разбираться, одна только подсистема /proc, /sys или /dev чего стоит. Но база уже заложена. Если я что-то упустил - напишите в комментариях.
Что такое системные демоны?
Важные сервисы которые выполняют действия, важные для всей системы. Сюда можно отнести сервис логгирования, монтирование файловых систем, подключение к сети и т д.
Хорошо-бы иметь словарь сокращений. Разумеется часть из них воспринимаются интуитивно (вероятно не всеми и не всегда корректно)
Добавил, так намного лучше.
Не совсем понятна разница между разделом "/" и "/boot". Из статьи система ставиться в "/boot", тогда для чего используется "/"? По умолчанию для новичков рекомендуется делать один раздел "/". Т.е. , какая я догадываюсь, все разделы могут создаваться программно без переразбивки диска. Тогда зачем нужно делать такую разбивку? Не понятно...
Система устанавливается в /, это главная папка, а в /boot просто находятся файлы загрузчика Grub. Вообще, совсем не обязательно выносить файлы загрузчика на отдельный раздел, но это делается в системах, где для корня '/' используется файловая система, которую не поддерживает загрузчик, например btrfs. Ну иначе как он оттуда прочитает свои файлы? Также это применяется при шифровании корневого раздела и в других подобных ситуациях. Новичкам рекомендуют не выносить Grub (/boot) на отдельный раздел, потому что так его будет проще потом восстанавливать, но я бы не рекомендовал, пусть сразу приучаются делать правильно. И еще, разделы, это по сути аналоги дисков Windows, а значит создаются и изменяются переразбивкой диска также как и в Windows. Чтобы создать новый раздел нужно отрезать место от старого или удалить его, поменять разделы местами или что-то в этом роде невозможно, если вы по это.
Спасибо за разъяснения.
Я уже много лет при установке Линукса делаю три диска: корневой (/), swop и "домашний" (/home) - это позволяет мне почти безболезненно переустанавливать систему
А я создаю 4 раздела: swop,корневой (/),домашний (/home) и программы и настройки пользователя(/usr)
Если вы читаете этот комментарий в 2018, то от каталога swop все современные дистрибутивы уже отказались и по факту о не нужен.
А при переходе в hibernate куда всё денется?
МИХАЛ :Сейчас 9 октября 2019 г у меня установлен desktop дистрибутив Linux (Fedora)
и раздел Swap у меня есть (без него дистрибутив просто не хочет устанавливаться.)
PS Другой вопрос зачем мне нужен раздел подкачки Swap ведь на моём компьютере 32 гб RAM ???
Как минимум для hibernation (режима сна), куда система сложит все 32 гб вашего ОЗУ
Если раздела подкачки нет, она положит это в файл /$ "swapfile" (в корне файловой системы)
Большое спасибо автору!
Много раз читал про структуру и только сейчас все стало на свои места! Все по полочкам. Да, разбираться еще придется, но это отличный набор базовых знаний.
Ед. ч. — сервер, мн. ч. — серверы (а не сервера);
ед. ч. — драйвер, мн. ч. — драйверы (а не драйвера)... и т. д.
/var/spool/cron /exim и т.д - тоже принтер?
Поправил.
а каким образом домашная папка находится в корневой папке,а в корневой меньше места чем домашней
Корневая папка это условное место (ствол дерева файловой системы), откуда вы прокладываете путь. Например, Ярославское шоссе. Шоссе может проходить мимо города Мытищи, так папка home может быть отдельным диском, примонтированным по адресу /home
Физически не находится, можно представить себе меню сайта, где есть ссылки на страницы внутри сайта и одна "/home" на ваш личный сайт на другом сервере.
То есть переходя на "/home", вы видите другой раздел вашего диска, и размер этого раздела не прибавляется к размеру корневого раздела "/"
В файловом менеджере нужно нажимать на "домашний каталог" тогда будет виден его размер.
А если нажать "корневой каталог > home" будите внизу панели видеть размер корневого каталога.
Здравствуйте, вы написали, что в каталоге /sbin находятся программы которые можно запускать с правами суперпользователя. ВОТ: "Но здесь находятся программы, которые можно выполнять только с правами суперпользователя." Но сейчас я проверил ifconfig запустил через обычного пользователя которого даже нет в файле sudoers и все хорошо работает. Почему так? Что-то изменилось с момента написания статьи.
Здравствуйте. Раньше так было. sbin расшифровывается как superuser binary, но видимо, в вашем дистрибутиве разработчики добавили директорию sbin в PATH всех пользователей. Поэтому вы можете запускать команды не только от имени суперпользователя.
Михаил и Admin, здравствуйте! Позволю себе другую трактовку предназначения каталога /sbin. Здесь хранятся программы, обычно запускаемые суперпользователем, они принадлежат пользователю root (по крайней мере, в моём Alt Linux). Но эти файлы имеют права чтения и запуска для всех, поэтому доступны и обычным пользователям.