Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
мои шпоры ОСиСП(1).doc
Скачиваний:
32
Добавлен:
26.09.2019
Размер:
1.63 Mб
Скачать

Билет 14

1. Файлы и файловая система в ОС UNIX. Права доступа (3, 14) – 18

В трактовке стандарта POSIX понятие файла охватывает все, что может содержать, потреблять и/или поставлять информацию. Файлы в этой системе также определяют привилегии пользователя, так как права пользователя в большинстве случаев контролируются с помощью прав доступа к файлу.

В стандарте зафиксированы следующие типы файлов:

  • обычный файл;

  • каталог;

  • канал;

  • файлы устройства

  • файлы символичной связи (ссылки);

  • сокет.

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

Размер файла определяется количеством байтов и называется длиной файла. Длину файла можно изменить при помощи операции усечения файла. Один и тот же файл может быть открыт несколько раз, причем другими или тем же самым процессом каждое открытие экземпляра файла присваивает уникальный дескриптор файла. Несколько процессов могут использовать один и тот же дескриптор файлов. Работа с файлом производится через индексный дескриптор.

Каталоги - это файлы содержащие имена находящихся в них файлов и указатели (номера) индексных дескрипторов в которых содержится информация о файле. Каталоги определяют положение файла в дереве файловой системы. Программа, имеющая право на чтение каталога может прочесть его содержимое, но только системные вызовы ядра имеют право на запись в каталог. Соотношение номера дескриптора и имени файла называется жесткой ссылкой. Первоначально на диске создается 1 корневой каталог «/» . В котором могут храниться ссылки на другие каталоги. Проходя по вложенности каталогов, получаем полный путь к файлу. Хотя каталоги похожи на обычные файлы, но для работы с ними есть специальные вызовы. Одинаковые имена не могут фигурировать в разных элементах одного каталога, но разные элементы могут ссылаться на один и тот же файл. Количество имен файла определенно в специальном поле, которое называется число жестких связей. Работать с файлом можно через любое имя. Файл будет удален, когда удалят все его имена.

Канал можно представлять себе в виде транспортера (мех-зм межпроцессного взаимодействия), с одной стороны которого находится поставщик (процесс, пишущий в канал), а с другой - потребитель (процесс, читающий из канала). Данные читаются в том же порядке, в каком производилась запись, т. е. с точки зрения структур данных канал - это очередь.

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

- Блочные(Block device)

- Символьные(character device)

Доступ к символьным устройствам осуществляется как к линейной очереди байтов (клавиатура принтер и т.д.). Блочные устройства предоставляют возможность обращения к данным как к массивам. То есть имеется возможность поиска данных по массиву. И пользовательские программы могут производить запись и могут читать данные из произвольной области массива (жесткий диск, флешь память и т.д.)

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

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

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

именуемую файловой системой. Все неконцевые вершины графа (т. е. вершины, откуда выходит хотя бы одна дуга) являются каталогами; все концевые имеют другие типы.

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

Корнем этого дерева является корневой каталог. Его имя ‘ / ’

Все файлы имеют имена, которые представляют собой путь (список каталогов который необходимо пройти, чтобы достигнуть файла).

Имя, начинающееся с ‘/’ называют полным именем файла. Можно указать относительное имя файла тогда поиск будет начат от текущего каталога.

Важно, что имя файла является атрибутом файловой системы, а не набора данных, на каком- то носителе. Каждый файл имеет метаданные для связи с ним.

Метаданные – набор данных определяющих характер файла.

Они хранятся в индексных дескрипторах, и имя файла в файловой системе является указателем на индексный дескриптор inode.

Все файлы в Unix имеют двух владельцев (пользователь и группа пользователей). Пользователь владеющий файлом может не принадлежать к группе владеющей файлом.

>ls -l // Выводит полную информации о каталоге.

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

В ОС Unix существует три базовых класса доступа к файлу:

- пользователь, владеющий файлом;

- пользователь, относящийся к группе владеющей файлом;

- остальные (остальные кроме root).

И для каждого класса устанавливаются 3 типа прав доступа:

- чтение;

- запись;

- выполнение.

Пример: rwx r-x rw-

Владелец группа остальные

Команда интерпретатор:

Д ля просмотра содержимого необходимо r. Для изменения содержимого необходимо w. Для запуска на выполнение необходимо x.

Интерпретация прав доступа по отношению к каталогу

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

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

Порядок действия ОС при проверке прав доступа. При инициализации действий над файлом выполняется проверка прав доступа:

Если это root действие разрешается и дополнительной проверки не производится.

Если действие запрашивается владельцем файла, то проверяется наличие права на запрашиваемое действие.

Если действие запрашивается пользователем, входящим в группу владеющую файлом, то проверяется наличие права на запрашиваемое действие.

Если действие запрашивается другим пользователем, то проверяется наличие права на запрашиваемое действие.

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

#include <sys/types.h>

#include <sys/stat.h>

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]