10. Атрибуты файлов. Виды файлов. Обычные (регулярные) файлы, ссылки. Специальные типы файлов - каналы, сокеты, файлы устройств.

Типы файлов

В UNIX существует шесть типов файлов, различающихся по строение и поведению при выполнении операций над ними:

Обычный файл (regular le)

Это наиболее общий тип файлов, содержащий данные в некотором формате. Для ОС это просто последовательность байт. Интерпретация содержимого производится прикладной задачей. Пример: текстовый файл, двоичные данные, исполняемый файл. Их можно просматривать командами cat имя и less имя.

Каталог (directory)

Это файл, содержащий имена находящихся в нем файлов, а также указатели на метаданные этих файлов, позволяющие ОС производить операции над ними. Каталоги определяют положение файла в дереве файловой системы, так как сам файл не содержит информации о своем местонахождении. Каталоги образуют дерево. Для работы с каталогами используются команды: ls с ключами -a и -l, cd, mkdir, rm, rmdir, mv.

Первые два байта в каждой строке каталога являются единственной связью между именем файла и его содержимым. Именно поэтому имя файла в каталоге называют связью. Оно связывает имя в иерархии каталогов с индексным дескриптором и, тем самым, с информацией.

Специальный файл устройства (special device le)

Обеспечивает доступ к физическому устройству. Различают символьные и блочные файлы устройств. Доступ к устройствам происходит путем открытия, чтения/записи в специальный файл устройства. Символьные файлы позволяют небуферизованный обмен данными (посимвольно), а блочные - обмен пакетами определенной длины - блоками. Для создания файлов устройств используется команда mknod.

FIFO или именованный канал (named pipe)

Используется для связи между процессами.

Связь (ссылка)

Жесткая ссылка

Связь имени файла с его данными называется жесткой ссылкой (hard link). Имена жестко связаны с метаданными и, соответственно, с данными файла, в то время, как файл существует независимо от того, как его называют в файловой системе. Такая система позволяет одному файлу иметь несколько имен в файловой системе. Жесткая связь не принадлежит к особому типу файлов, а является естественной формой связи имени файла с его метаданными. Жесткие ссылки можно создать командой ln (link).

Символическая ссылка

Особый тип связи - символическая связь, позволяющая косвенно адресовать файл, в отличие от жесткой, обращающейся напрямую. Символическая ссылка содержит в себе имя файла, на который ссылается, а не его данные. Физическое расположение файлов различно. Размер symfirst - длина имени файла, на который ссылается символическая связь. ОС работает с symfirst не так, как с обычным файлом: при обращении к нему появятся данные first.

Сокет (socket)

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

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

Атрибуты файлов

Владельцы файлов

Группой называется определенный список пользователей системы. Пользователь может быть членом нескольких групп, одна из которых является первичной, а остальные - дополнительными.

/etc/passwd - список всех пользователей и их первичных групп; /etc/group - список всех групп и их дополнительных пользователей. В UNIX любой файл имеет двух владельцев:

  1. владельца-пользователя
  2. владельца-группу.

Права доступа к файлам

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

  1. u (user) для владельца-пользователя
  2. g (group) для владельца-группы
  3. o (other) для всех остальных
  4. а (all - объединяет 3 предыдущих класса). Для всех классов пользователей

В каждом из этих классов установлены три основных права доступа:

  1. r (read) право на чтение
  2. w (write) право на запись
  3. x (execute) право на выполнение

В первой колонке вывода команды ls -l можно просмотреть установленные права.

Пример:

$ ls -l

Возможно также задание прав через числовой формат в восьмеричной системе счисления. Пример: chmod 666 *.

Значение прав доступа

Для обычных фалов - очевидно: право на чтение надо, чтобы прочитать файл, право на запись, чтобы иметь возможность файл изменить, а право на выполнение, чтобы запустить программу или скрипт. Примечание. Для успешного запуска скрипта необходимо установить атрибут r, чтобы командный интерпретатор мог построчно считывать текст скрипта. Для каталогов и символических связей интерпретация прав доступа проводится по-другому. Права символических ссылок совпадают с файлом, на который она указывает. На самой ссылке стоит 777 (всем все) и это не имеет значения. Для каталогов r позволяет получить имена (и только имена) файлов, находящихся в данном каталоге. X позволяет “выполнить”каталог, то есть заглянуть в метаданные и получить полную информацию о каталоге.

Атрибут w должен быть установлен для того, чтобы можно было изменять каталог: создавать и удалять файлы. Для удаления файла из каталога достаточно иметь установленный атрибут w для каталога, в котором он находился, а права файла при этом не учитываются.

Последовательность проверки прав

  1. если вы администратор (root), доступ разрешен. Права не проверяются.
  2. если операция запрашивается владельцем, идет проверка его прав. В соответствии с ними ему разрешается выполнение операци или нет.
  3. если операция запрашивается пользователем, входящим в группу, владеющую файлом, идет проверка его прав. Соответственно, он либо получает разрешение, либо нет.
  4. аналогично для всех остальных пользователей.

Дополнительные атрибуты файла

Для обычных файлов:

Для каталогов: