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

3.9.2. Разряды прав доступа и специальные разряды

Каждый файл имеет девять разрядов прав доступа и три специальных разряда. Эти разря­ды устанавливаются при создании файла и могут быть модифицированы с помощью сис­темного вызова chmod.

Установка режима файла. Второй аргумент, который задается в системном вызове creat. служит для задания значений прав доступа, которые будут установлены при создании файла. Например:

fd = creat("newfile", 0744);

Будет создан файл newfile, для которого требуется установить начальный набор таких прав

доступа: rwxr--r.--

Второй аргумент в creat - это требование на установку доступа. Ядро будет выбирать это требуемое значение и далее накладывать на него маску. В результате получается дво­ичный код, который и будет окончательным для установки прав доступа. Маска называет­ся маска на создание файлов и определяет, какие разряды в исходном требовании на права доступа должны быть сброшены. Например, если вы хотите запретить программам созда-

вать файлы в системе, которые можно было бы модифицировать группе и остальни пользователям, то вы должны будете сбросить разряды: --w—w-, что соответствует восьмеричному коду 022. Системный вызов umask в таком варианте:

umask(022);

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

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

специальных разрядов с помощью системного вызова chmod. Два примера:

chmodfytmp/myfile", 04764);

chmodf'Amp/myfile", SJSUID | SJRWXU J S_IRGRP|S_IWGRP | SJROTH);

имеют один и тот же результат. В первом случае указывается новый двоичный код, выраженный в восьмеричном формате, а во втором случае указываются маски, которые определены в файле <sys/stat.h>, комбинируются в один двоичный набор или оператор. Во втором случае можно изменять значение разрядов доступа в будущей работе, не прерывая для этого вашу программу. Количество существующих программ, которым используют точное восьмеричное представление, таково, что можно говорить о меньшей

привлекательности этого варианта для тех, кто собирается менять значения разрядов доступа. Значение маски на создание файлов не влияет на значение режима, которое задает™

при обращении к системному вызову chmod.

В заключение суммируем свойства в данной таблице:

chmod

НАЗНАЧЕНИЕ

Изменение прав доступа и специальных разрядов для файла

INCLUDE

#include < sys/types.h >

#include <sys/stat.h>

ИСПОЛЬЗОВАН

ИЕ

int result = chmod(char 'path, mode);

АРГУМЕНТЫ

path - путь к файлу

mode - новое значение режима

КОДЫ ВОЗВРАТА

-1 - при ошибке

0 - при успехе

Команда Shell для изменения прав доступа и специальных разрядов.

Для модификации прав доступа и специальных разрядов используется обычная Unix-команда chmod. Команда chmod допускает возможность для пользователя задавать двоичный код режима в восьмеричном представлении (например, 04764) или в символьной нотации (например, и =rws g =rw о =r).