Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Конспект Лекций ПСРВ.doc
Скачиваний:
153
Добавлен:
12.02.2016
Размер:
2.73 Mб
Скачать

5.12. Разграничение доступа к файлам

QNX регулирует возможность приложений выполнять операции чтения/записи с файлом. Каждому созданному в QNX файлу устанавливаются идентификатор владельца (UID) и идентификатор группы (GID), а также атрибуты доступа для трех "личностей": владельца (user owner), группы (group owner) и "остальных" (other). Отметим, что владелец может не являться членом группы, владеющей файлом.

Каждой запущенной на выполнение программе (процессу) в системе устанавливается так называемый эффективный идентификатор владельца (EUID) и эффективный идентификатор группы (EGID). Эти идентификаторы используются для проверки прав доступа к файлу. Когда процесс пытается открыть какой-либо файл, QNX сначала проверяет, совпадает ли EUID процесса с UID файла. Если совпадает, то проверяется, имеет ли владелец право открыть файл с указанным режимом доступа. Если владелец имеет такие права, то файл открывается, если не имеет - процесс получит уведомление о запрете указанного режима доступа. Если EUID процесса не совпадает с UID файла, то проверяется, совпадает ли EGID процесса с GID файла и право группы открывать файл с указанным режимом доступа. Если никакие идентификаторы не совпали, тогда данному процессу может быть разрешен режим доступа, установленный для "остальных". Для процессов с EUID=0 (т.е. для пользователя root) доступ к файлам предоставляется без процедуры проверки прав.

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

Изменение для файла владельца пользователя производится командой chown, а изменение для файла владельца группы выполняется командой - chgrp. Эти команды может выполнить только пользователь root.

Владение файлом определяет не только возможность доступа к файлу, но и тот набор операций (прав доступа), который пользователь может совершить с файлом: чтение, запись, запуск на выполнение (для исполняемых файлов). Изменение прав доступа может осуществлять только владелец-пользователь, а также пользователь root.

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

Операционная система QNX различает три базовых класса доступа к файлу:

     User access (u) -        для владельца-пользователя файла.

     Group access (g) -      для членов группы, являющейся владельцем файла.

     Other access (o) -      для остальных пользователей (кроме суперпользователя, у которого максимальные права).

Для каждого из указанных классов доступа QNX поддерживает три типа прав доступа к файлу: на чтение (r), на запись (w) и на выполнение (x).

Права доступа могут быть изменены только владельцем файла или пользователем root посредством команды chmod.

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