rmnssnvsk / structure-dir-linux.md
В этом каталоге хранятся основные команды операционной системы, такие как команды оболочки и команды файловой системы (ls, cp и т.д.).
Здесь хранятся образы ядер Linux и менеджер загрузки: grub, lilo и т.д.
Директория содержит файлы устройств, подключенные к операционной системе. В Linux вообще всё рассматривается, как файл, даже различные устройства, такие как принтеры, жёсткие диски, сканеры и т.д. Для получения доступа к определённому устройству, необходимо чтобы существовал специальный файл. Аналогично устроено большинство UNIX-подобных операционных систем.
В этой директории находится основная часть конфигурационных файлов самой операционной системы (настройки сети, список пользователей, групп и т.д.) и различных программ (Apache, Samba и т. д.).
В этом месте должна размещаться вся личная информация пользователей системы. Почему должна? Потому что владелец компьютера может хранить свою личную информацию в любом понравившемся ему месте. В целях безопасности самой операционной системы и пользовательских данных хранить последние строго рекомендуется в директории /home. Для получения более высокой надежности операционной системы и сохранности пользовательской информации директорию /home рекомендуется выделить в отдельный раздел жесткого диска.
Это Домашняя папка пользователя usermame. В ней хранится пользовательская часть конфигурационных файлов (настройки пользовательских программ) и вся личная информация пользователя. Linux является многопользовательской системой и поэтому каждый пользователь имеет уникальный каталог для персональных файлов. Этот каталог называется Домашней папкой пользователя. Домашняя папка суперпользователя root располагается в корне файловой системы. Такое разделение пользовательских директорий от файлов операционной системы упрощает резервирование данных и повышает надежность самой операционной системы.
В lost+found скидываются файлы, на которых не было ссылок ни в одной директории, хотя их inod не были помечены как свободные. Допустим при удалении файла из директории произошёл сбой (выключилось питание), то в системе останется потерянный inod, который вроде как и указывает на корректный файл, но этот файл не содержится ни в одной директории. В ext2 и других нежурналируемых файловых системах задача восстановления таких файлов ложится на fsck. Он находит inod, на которые нет ссылок, и создаёт на них ссылки в lost+found. После этого пользователь сможет просмотреть файлы и при необходимости переместить им куда надо, вернув нужные имена. В ext3 и в других журналируемых файловых системах fsck просматривает журнал и видя, что операция завершилась не полностью, откатывает ее. Поэтому потерянных inod в журналируемых файловых системах находиться меньше.
Эта директория предназначена для хранения системных библиотек, необходимые для работы программ из директорий /bin и /sbin и операционной системы вцелом.
Директория, используемая для автоматического монтирования различных устройств USB-накопителей, CD-ROM и т.д. При вставке в привод CD-ROM диска он автоматически подключается во вложенный каталог этой директории.
Обычно эта директория используется для ручного подключения устройств. В эту директорию командой mount «руками» монтируются различные USB-накопители, CD-ROM и т.д.
Директория, в которой обычно размещаются установленные программы, имеющие большой дисковый размер или вспомогательные пакеты (например /opt/openoffice.org).
/proc — это директория, к которой примонтирована виртуальная файловая система procfs. Различная информация, которую ядро может сообщить пользователям, находится в «файлах» каталога /proc. Например, в файле /proc/modules находится список загруженных модулей ядра. А в файле /proc/cpuinfo — информация о процессоре компьютера. Подробнее можно прочитать здесь.
Это домашний каталог или Домашняя папка суперпользователя. Эта директория фактически ничем не отличается от директории обычного пользователя. Данная директория по умолчанию всегда расположена в корневом каталоге файловой системы. Это было сделано для предотвращения проблем с доступом к директории /home. В случае когда к каталогу /home по какой-то причине невозможно получить доступ, в системе всегда есть возможность залогиниться под учетной записью суперпользователя, для решения возникших проблем с доступом.
Основные системные программы для администрирования и настройки системы (iptables, ifconfig и т.д.).
Параметры, которые специфичные для окружения системы. Чаще всего данная директория пуста.
/sys — это директория, к которой примонтирована виртуальная файловая система sysfs, которая добавляет в пространство пользователя информацию ядра Linux о присутствующих в системе устройствах и драйверах. В версии ядра ниже 2.6 не использовалась.
/sys/block содержит директории всех блочных устройств, присутствующих в данный момент в системе.
В этой директории находится список шин, определенных в ядре Linux (eisa, pci и т.д.).
Каталог содержит список группированных устройств по классам (printer, scsi-devices и т.д.).
Временное хранилище данных. Аналог папки в ОС Windows — C:/Windows/Temp. Все пользователи имеют права чтения и записи в этом каталоге.
В этом каталоге хранятся все установленные пакеты программ, документация, исходный код ядра и система X Window. Все пользователи кроме суперпользователя root имеют доступ только для чтения. Может быть смонтирована по сети и может быть общей для нескольких машин.
Директория дополнительных программ для всех учетных записей.
Каталог для размещения доступных компьютерных игр в системе.
Системные библиотеки для программ, расположенных в директории /usr.
По стандарту /usr должен быть общим для нескольких компьютеров и смонтирован по сети, а /usr/local должен содержать установленные пакеты программы только на локальной машине (к примеру, /usr — бюджет семьи, а /usr/local — личный кошелек каждого). Но чаще всего директория /usr/local используется для установки программ, которые не предназначены для конкретного дистрибутива (к примеру для пакетного дистрибутива Ubuntu в /usr находятся «родные» установленные пакеты, а /usr/local находятся собранные пакеты из исходников).
Дополнительные системные программы.
Общие данные установленных программ.
В каталоге находятся все иконки системы.
Директория, в которой обычно находится справочная документация по установленным программам.
Исходные кода (например, здесь располагаются исходные кода ядра).
Это каталог для часто меняющихся данных. Здесь находятся журналы операционной системы, системные log-файлы, cache-файлы и т. д.
В этом месте хранятся все кэши различных программ.
В этом месте расположены файлы с игровыми достижениями.
Постоянные данные, изменяемые программами в процессе работы (например, базы данных, метаданные пакетного менеджера и др.).
Здесь лежат lock-файлы, указывающие на занятость некоторого ресурса.
В этом месте хранятся все log-файлы.
Задачи, ожидающие обработки (например, очереди печати, непрочитанные или не отправленные письма, задачи cron и т. д.).
В этом месте размещаются Web-страницы для сервера Apache.
Структура каталогов Linux
Узнать тип файла можно с помощью команды, с которой мы уже имели дело:
Первый символ в каждой строке вывода обозначает тип файла. Уточнить его можно с помощью команды file [имя] , которой в качестве входных данных передаётся имя файла/папки.
Linux-системы имеют много общего, и файловая структура — одна из этих общих черт. Знакомство с ней поможет увереннее ориентироваться в операционной системе в целом. Давайте погрузимся немного поглубже и посмотрим, что лежит в корне Linux-системы.
Собственно, в корне, или корневой директории «/» , лежат все данные сервера, распределённые по разным каталогам. При этом каждый каталог имеет своё значение и содержит файлы, сгруппированные по определённому критерию. По умолчанию структура директорий состоит из папок:
Рассмотрим каждую подробнее.
/bin
Директория /bin содержит исполняемые бинарные файлы различных служб, доступные для запуска любым пользователям сервера. Включает и исполняемые файлы базовых команд, которые мы узнали в статье про первые шаги в командной строке: echo , cat , cd , pwd , ls и пр.
Является символьной ссылкой на каталог /usr/bin .
/boot
Содержимое этого каталога содержит сердце системы — файлы загрузчика и ядра. Без этой директории операционная система не сможет запуститься.
/dev
Эта директория содержит файлы устройств, подключенных к серверу. Включает терминал, через который мы отдаём серверу команды ( tty* ), а также специальные устройства типа null , random , zero . Ну и, конечно, сам диск сервера и его разделы ( vda* ).
/etc
Эта директория по умолчанию содержит все конфигурационные файлы служб, а в некоторых случаях — и скрипты для их запуска и отключения. Если вам нужно изменить какие-то параметры в работе той или иной службы — скорее всего, её конфигурационный файл будет лежать где-то в /etc . Но не всегда.
/home
Эта папка предназначена для домашних каталогов пользователей. Каждый раз, когда вы создаёте локального пользователя без указания домашней папки, здесь автоматически создаётся одноимённая папка — его домашняя директория по умолчанию.
/lib и /lib64
В директории /lib хранятся библиотеки, необходимые для работы системных служб, файлы которых размещены в папках /bin и /sbin . А также данные для загрузки системы и модуля ядра ОС.
Директория /lib64 предназначена для тех же целей, только включает в себя библиотеки для всех остальных служб сервера.
По умолчанию /lib и /lib64 являются символьными ссылками на соответственно /usr/lib и /usr/lib64 .
/media
В этой директории операционная система автоматически монтирует внешние устройства (USB, CD-ROM и пр.).
/mnt
Эта папка выполняет аналогичные /media функции — используется для временного монтирования внешних устройств. Преимущественно вручную.
/opt
В эту папку обычно устанавливается пользовательское программное обеспечение. Собственно, это и заложено в название — директория для опциональных, необязательных данных. По умолчанию не содержит данных.
/proc
В этом каталоге хранятся процессы и системная информация ОС, представленная в виде файлов, так называемая «виртуальная файловая система». Все данные в этом разделе генерируются автоматически и обновляются на лету.
Все директории с наименованием в цифровом формате содержат информацию о запущенных процессах. В частности, название папки соответствует PID , идентификатору процесса.
/root
Домашняя папка для корневого пользователя root .
/run
Этот каталог включает в себя данные, обрабатываемые и хранимые в оперативной памяти — например, PID процессов, информацию о ходе их выполнения, активные сокеты и пр. Так называемая временная файловая система. Она сбрасывается при каждой перезагрузке сервера.
/sbin
Как и /bin , содержит исполняемые бинарные файлы системных служб. Но, в отличие от /bin , только служб, запуск которых возможен исключительно с правами администратора.
Является символьной ссылкой на каталог /usr/sbin
/srv
Эта папка предназначена для сервисных нужд — чтобы пользователи сервера могли найти какие-то общедоступные данные для конкретной службы, например, веб-сервера, FTP-сервера. По умолчанию не содержит данных.
/sys
Ещё одна директория, содержащая виртуальную файловую систему. В этот раздел экспортируются данные ядра операционной системы и его модулей. Этот каталог перезаписывается после каждой перезагрузки операционной системы.
/tmp
Эта папка используется операционной системой и различными внутренними службами для хранения временных файлов.
/usr
В этом каталоге хранятся исполняемые файлы, библиотеки и файлы документации ( man ) для внутренних служб, компоненты ядра для функционирования операционной системы, а также данные программ, установленных пользователями.
Собственно, директории /bin и /sbin , /lib и /lib64 cсылаются на соответствующие каталоги внутри /usr .
/var
Директория /var содержит часто изменяемые данные. Например, кэши ( /var/cache ), логи ( /var/log ), очереди ( /var/spool ).
Здесь же по умолчанию хранятся данные сайтов ( /var/www ), сервера баз данных ( /var/lib/mysql ), почтового сервера ( /var/mail → /var/spool/mail ).
Теперь мы знаем, как работать с файлами в Linux-системах и как они распределены по каталогам. Самое время подняться на следующий уровень и поговорить о не менее важном атрибуте любой Linux-системы — о пользователях.