OS Linux

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

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

Наверняка для многих, кто впервые установил Linux, одно из самых непривычных и непонятных вещей была его файловая структура после привычного локального диска "C: ". Набор каталогов со странными названиями, в которых находится куча непонятных файлов, весьма необычен. Поэтому сегодня я расскажу, как устроена файловая система в Linux, для чего нужен тот или иной каталог, а также расскажу о преимуществах и недостатках подобного решения.

Особенности

Сперва кратко расскажу о некоторых примечательных особенностях в файловой системе Linux. Одно из отличий Linux от Windows в их файловых системах является так называемый чувствительность к регистру. Например, создадим Windows текстовый файл с именем "LINUX" напечатанным заглавными буквами, и создадим точно такой же файл, но название уже напишем строчными. При попытке сохранения система предложит либо перезаписать существующий файл, либо переименовать его, поскольку для Windows это будет один и тот же файл, пусть и названы немного по-разному, в Linux же это будут два разных файла. И таким же макаром можно играться с регистром имени, и это будут разные независимые файлы в Linux, как и во многих других Unix-подобных ОС.

Для более удобной организации структуры файлов активно используются символьные ссылки(симлинки). Символьная ссылка - это что-то вроде ярлыка, указывающего на тот или иной файл или каталог, который может находиться на отдельном диске или даже на удаленной машине. При этом, если символьную ссылку переместить куда-нибудь она также продолжит работать. Символьные ссылки используются, если файлу нужно дать другое имя, но без его фактического переименования. Это чаще всего используется для библиотек, которые в названии имеют версию. Их использующему приложению требуется, чтобы было указано только имя библиотеки и ничего более. Поэтому создается символьная ссылка с нужным именем, которая ссылается на исходный файл. Я также активно пользуюсь симлинками. Например, у меня система установлена на SSD, но захламлять домашний каталог я не хочу. Поэтому я заменил директории "Загрузки" "Видео" и другие символьными ссылками, указывающими на эти же каталоги, но расположенные на отдельном жестком диске. В результате, например, при сохранении чего-либо в каталог "Загрузки" файл будет размещаться не на Ssd, где находится симлинк, а в одноименном каталоге на жестком диске, куда это ссылка ведет.

То, какие каталоги должны быть и что в них должно лежать, описано в документе под названием "стандарт иерархии файловой системы" сокращенно "FHS" который в настоящее время поддерживается организацией Linux Foundation. Этот документ разрабатывался с 1993 года в качестве попытки стандартизации структуры файлов в Gnu, Linux и других Unix-подобных Ос. Однако не все системы стали жестко следовать этому стандарту, тем более что он разрабатывался в первую очередь в интересах Linux. Так, например, Apple отказалась от "FHS" вообще и использует свою собственную иерархию каталогов, но частично совместимую с традиционной Unix. Это же касается и некоторых дистрибутивов Linux, но о них чуть позже. Так или иначе, стопроцентно документу "FHS" не следует практически никто. Но большинство дистрибутивов Linux, а также Bsd стараются придерживаться определенных положений, так как Gnu Linux - это Unix-подобная Ос.

От Unix она переняла очень гибкую систему прав доступа к файлам и каталогам. На каждый файл или каталог на диске могут быть установлены определенные права. Например, разрешающие чтение файлов только владельцу или определенной группе пользователей, запретить или разрешить их редактирование, создание или удаление, разрешить выполнять их от имени определенного пользователя и так далее. Это является одним из преимуществ Unix-подобных систем и их защищенности. Для изменения прав на файлы и каталоги используется утилита Chmod, а для смены владельца - Chown. При этом права записываются либо в числовой форме с указанием кода, либо в символьный с указанием параметров. Права указываются одновременно для трех типов пользователей: непосредственно владельца, пользователей, входящих его группу, и всех остальных пользователей.
К примеру, чтобы дать файлу право на выполнение, достаточно выполнить команду "chmod x" для требуемого файла. При этом файл будет исполняться с правами того пользователя, кто, собственно, и дал ему право на его выполнение. При установке прав таким способом можно управлять, каким именно пользователям будут даны эти права: всем, только владельцу или владельцу и его группе.

Права в числовой форме

Тогда как при установке прав в числовом виде они применяются ко всем трем категориям сразу. Если необходимо дать всем пользователям полный контроль над файлом или каталогом, необходимо установить на его права с кодом "777" На домашние каталоги пользователей устанавливаются права с кодом "750" означающим, что никто, кроме владельца и членов его группы, не может читать содержимое, редактировать или запускать на выполнение файлы в данном каталоге.

Права в символьной форме

Посмотреть, какие права установлены на каталоге, можно командой "ls -la" При этом права будут указаны в символьной форме, где "r" это чтение, "w" это запись, "x" это выполнение. Структура каталогов в файловых системах Linux представляет собой дерево, в основе которого лежит так называемый "корневой раздел" он же "корень" он же "root fs", обозначаемый слэшем "/". Грубо говоря, это аналог системного диска в Windows. От него уже расходятся ветви, которые являются находящиеся на корневом разделе каталоги. По этому пути каталоги идут относительно корневого раздела. Например, можно открыть любой каталог в домашней директории например, "Документы" и в адресной строке посмотреть полный путь к нему, если такая настройка включена в файловом менеджере. Как можем видеть, каталог "документы" находится внутри каталога с именем пользователя, который находится в каталоге "home" который, в свою очередь, находится в корневом разделе. И так с абсолютно любым каталогом. все идет относительно корневого раздела. И неважно, где он находится - на отдельном диске, на удаленной машине или в другом измерении, он все равно будет подключен к общему дереву.

В следующей части "Каталоги файловой системы" мы разберем системные каталоги в виде древовидной иерархической структуры и за что отвечает каждый каталог.

Навигация

Пакетные менеджеры Linux

« Предыдущая статья

Nmap - сетевой сканер инфраструктуры

Следующая статья »