Основы файловой системы UNIX

Файловая система – это раздел операционной системы, включающий средства организации информации в виде файлов и средства доступа к файлам.

Различают физический и логический уровень файловой системы. Физический уровень задает внутреннее машинное представление информации на носителях (дисках, магнитных лентах и т.д.). Логический уровень описывает форму, в которой файловая система доступна прикладным программам и пользователям – имена и атрибуты файлов, организация каталогов и т.д.

Различные UNIX-системы используют различные типы физических файловых систем (UFS, FFS, Ext2 и др.). При этом логический уровень подчиняется единым стандартам и образует единую файловую систему UNIX.

Файловая система UNIX представляет собой иерархическую (древовидную) структуру с поименованными узлами – каталогами и файлами. Каждый каталог содержит информацию о файлах, а также каталогах нижнего уровня. На структуру файлов не накладывается никаких ограничений; каждый файл рассматривается как последовательность байт (символов, литер).

Для разделения имен каталогов в UNIX используется прямая косая черта (/). Например, /home/john/letters/mom.brt означает: "файл mom.txl в каталоге letters в каталоге john в каталоге home ". Можно также сказать, что john - это подкаталог каталога home и т.д.

В этом примере следует отметить еще несколько моментов:

· Перед именем стоит косая черта (/). Косая черта в начале имени обозначает "корневой каталог", который является, по сути, точкой, в которой "склеены" между собой все диски системы. В ОС UNIX никогда не обращаются к самому диску, а всегда - к подкаталогам корневого каталога.

· UNIX-системы являются многопользовательскими. Каждому пользователю назначается "домашний каталог", в котором он должен хранить свои файлы, даже если он - является единственным пользователем системы. /home/john - это, вероятно, домашний каталог пользователя john.

· Пользователи могут создавать собственные каталоги так, как Джон создал каталог letters.

Взятое нами в качестве примера имя файла (/home/john/letters/mom.txt) называется полным именем, потому что оно показывает весь "путь" к файлу, начинаяс корневого каталога. Такие имена не обязательно использовать постоянно. Применяется целый ряд сокращений:

· Рабочий каталог всегда в Вашем распоряжении. Можно указывать пути относительно текущего каталога, а не корневого. Например, если текущим является каталог /home/john/letters, можно указать только имя файла - mom.txt. (Именно это Вы и делаете в большинстве случаев: указываете файл в текущем каталоге.) Команда pwd выдает имя текущего каталога; команда cd каталог делает текущим другой каталог. Так, если текущим является каталог /home/john, то команда cd letters перенесет Вас в каталог letters Команда mkdir каталог создает новый каталог, а команда rmdir каталог удаляет каталог при условии, что он не содержит файлов.

· Вы можете обозначать домашний каталог знаком ~, а комбинацией ~имя - "начальный каталог пользователя имя ". Например, ~john/letters/mom.txt - еще один способ указать файл Джона. Команда cd без параметров предназначена для возврата в начальный каталог, при этом не учитывается, откуда Вы начали работу.

· Символы.. обозначают "родительский каталог". Чаще всего они используются с командами cd. Например, если текущим является каталог ~john/letters, то команда cd.. перенесет Вас в каталог ~john.

В UNIX существуют следующие типы файлов:

- обычный файл. Блок информации, текст, программа и т.п, хранимый на дисковом или ином носителе;

- каталог. Содержит информацию о других файлах и каталогах;

- специальный файл устройства. Обеспечивает доступ к физическому устройству. Весь программный обмен информацией с устройствами в UNIX реализуется путем чтения и записи в специальный файл устройства. Различают символьные (чтение и запись произвольных последовательностей байт) и блочные (чтение и запись блоками фиксированной длины) устройства;

- очередь, или именованный канал. Системная структура для обмена данными между процессами;

- символическая ссылка (SymLink). Указатель на файл (псевдоним). При обращении к ссылке реально происходит обращение к тому файлу, на который она указывает. Кроме символических ссылок, UNIX поддерживает жесткие ссылки – дополнительные имена для обычных файлов. При этом основное имя файла и жесткие ссылки на него абсолютно равноправны.

- сокет. Внутренняя системная структура для сетевого или межпроцессного взаимодействия. Пользователю непосредственно не доступен.

Каждый файл идентифицируется по имени и каталогу, в котором он расположен.

В именах файлов допускается использовать любые символы, кроме:

«пробел» «~» «,» «?» «!» «*» «[» «]»

«/» «\» «&» «>» «<»

Длина имени ограничена, в зависимости от реализации системы, 255 символами (UNIX System V) или 14 символами (BSD UNIX, а также ранние реализации UNIX). В именах различаются строчные и прописные буквы. Например, имена test, Test, TEST задают три различных файла, которые могут располагаться в одном каталоге.

Имена каталогов подчиняются общим требованиям к именам файлов. Каталог самого верхнего уровня называется корневым и обозначается символом «косая черта» («/»). Все доступное пользователям файловое пространство объединено в единое дерево каталогов. На логическом уровне нет разделения на тома, диски и т.п. Различные носители – дополнительные жесткие диски и их разделы, дискеты, CD-ROM, другие сменные накопители - отображаются (путем монтирования) в виде каталогов основной файловой системы.

Полное, или составное, имя файла (каталога) записывается в виде последовательности простых имен, разделенных косой чертой. Составное имя

/usr/sbin/adduser

начинается с корневого каталога «/», в который содержит каталог «usr». Каталог «usr» содержит (под)каталог «sbin», в котором расположен файл «adduser».

Часть составного имени файла до его непосредственного имени называется путем к файлу (в примере путь - /usr/sbin/).

В каждый момент времени один из каталогов является текущим. Если при обращении к файлу не указан путь, подразумевается обращение к файлу из текущего каталога. Так, если текущим каталогом является /usr/sbin, то к файлу /usr/sbin/adduser можно обратиться по (сокращенному) имени adduser.

Если путь не начинается с символа «/», считается, что путь записывается не относительно корневого каталога, а относительно текущего каталога (такой путь называется относительным). Существуют специальные обозначения, применяемые в записи относительного пути: символом «точка» («.») обозначается текущий каталог, «две точки» («..») – каталог, родительский по отношению к текущему.

В файловой системе UNIX файл любого типа, кроме имени, имеет следующие атрибуты:

- пользователь, которому принадлежит файл («владелец»);

- группа пользователей, которой принадлежит файл («группа-владелец»);

- дата и время создания или последней модификации;

- число жестких ссылок на файл. По умолчанию равно 1, увеличивается при создании на данный файл жестких ссылок. При удалении соответствующих ссылок уменьшается. Данные файла физически удаляются при удалении последней ссылки. Число жестких ссылок на файл можно интерпретировать как количество имен, под которыми в системе доступен данный файл.

- режим доступа (права, атрибуты доступа) – на чтение, запись и исполнение. Задаются отдельно для владельца, группы-владельца и остальных пользователей.

Права доступа (вместе с типом файла) символически отображаются в виде символов «r» (чтение), «w» (запись или модификация), «x» (для файлов – исполнение, для каталогов – право на просмотр содержимого). Отсутствие какого-либо права обозначается символом «-».

Первым символом отображается тип файла («-» - обычный файл, «d» - каталог (directory), «l» - символическая ссылка (link) и т.д.). Затем следуют 9 символов, из которых первая тройка символов относятся к владельцу, вторая – к группе-владельцу, последняя – к остальным.

Пример.

  - обычный файл, с правами «чтение, запись, исполнение» для владельца, «чтение, исполнение» для группы-владельца, «только чтение» для остальных пользователей.

Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: