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

В стандартной файловой системе (ФС) ОС Unix могут храниться объекты нескольких типов:

  • обычные файлы
  • каталоги
  • символические ссылки
  • специальные файлы - точки доступа к драйверам устройств
  • коммуникационные объекты FIFO
  • сокеты UNIX

Все эти объекты используют единую систему имен и имеют идентичные атрибуты, характеризующие права доступа.

Имя файла и его атрибуты (тип объекта, права доступа, информация о его расположении на носителе и т.п.) хранятся независимо друг от друга. Имена хранятся в каталогах, а атрибуты - в специальных структурах - inode.

Для хранения атрибутов файлов в ФС используется массив индексированных узлов inode (Indexed Node). Индекс - это целое число, указывающее порядковый номер inode в массиве. Для каждого файла в пределах одного раздела на диске индекс inode уникален. При этом, на разных дисках или на разных разделах одного диска ведётся своя независимая нумерация inode - так, например, индекс 2 может использоваться для корневого каталога каждого из разделов диска. Для объединения нескольких дисков в единую ФС используется виртуальная файловая система, которая пересчитывает номера inode так, чтобы обеспечивалась их уникальность. Если в Unix используется сторонняя ФС (например FAT или NTFS) то структура inode эмулируется на уровне виртуальной файловой системы.

Связь между именем и атрибутами осуществляется через объекты-каталоги. Каталоги в Unix - это таблицы, хранящие имя файла и индекс inode в массиве атрибутов. Один файл может иметь несколько имен, т.е. в различных каталогах или даже в одном каталоге могут быть записи, связывающие различные имена с одним inode.

Права доступа (R)ead, (W)rite, e(X)ecute определены по отдельности для трех категорий пользователей (U)ser,(G)roup, (O)ther. Дополнительно к правам доступа есть флаг смены владельца на время выполнения файла, смены группы на время выполнения файла и признак «липкости» (sticky bit), что бы он не означал.

Файлы можно создавать (одновременно давая имя), добавлять новые имена, удалять старые имена, а также менять права доступа к файлу (влияет на сам файл, вне зависимости от того к какому из его имен применялась операция). Администратор может еще и поменять владельца файла.

Файл, оставшийся без имени и не используемый для ввода/вывода или в качестве источника данных программы – уничтожается.