- •Раздел 1. Операционная система unix. Введение в операционную систему unix
- •Отличительные черты ос unix
- •Основы архитектуры операционной системы unix Модель системы unix.
- •Структура ядра ос unix.
- •Основы файловой системы ос unix
- •Типы файлов
- •Структура файловой системы unix
- •Владельцы файлов
- •Права доступа к файлу
- •Дополнительные атрибуты файлов
- •Устройства
- •Маска создания файла
- •Программы Oc unix
- •Процессы ос unix
- •Типы процессов
- •Атрибуты процесса
- •Процесс создания и запуска программ
- •Системный вызов завершения процесса exit
- •Системные функции типа exec
- •Обработка ошибок
- •Ограничения для процессов
- •Пользователи системы, Атрибуты пользователя
- •Средства ВзаимодействиЯ между процессАми
- •Сигналы
- •Посылка сигналов.
- •Int raise (int sig); // посылает сигнал вызывающему процессу (т.Е. Самому себе).
- •Обработка сигналов.
- •Набор сигналов.
- •Файловая подсистема ос unix
- •Индексный дескриптор
- •Блоки хранения данных
- •Недостатки и ограничения файловой системы s5fs
- •Файловая система ffs (Fast File System)
- •Основные отличия ffs от s5fs
- •Ограничения ffs
- •Каталоги ffs
- •Раздел 2. Взаимодействие процессов. Процесс, Понятие и классификация
- •Ресурсы, Понятие и классификация
- •Взаимодействие процессов Задача взаимного исключения
- •Integer очередь;
- •ОБобщенная задача взаимного исключения
- •Integer очередь;
- •Синхронизирующие примитивы (семафоры)
- •Процесс 1 :
- •Процесс 2 :
- •V(свободно);
- •Задача “производитель-потребитель” применение ОбщиХ семафорОв
- •Задача “производитель-потребитель” (буфер ограниченНый)
- •Взаимодействие через переменные состояния
- •Integer array желание[1:n], сп[1:n];
- •Integer чпб, бб, рб, чсеб, I;
- •Integer разм_п, n, max, nmax;
- •Проблема тупиков
- •Алгоритм банкира
- •Integer Св_Деньги; boolean Безопасно;
- •If ((Завершение_под_сомнением [I]) and
- •Применение алгоритма банкира
- •V(Взаимн_искл);
- •V(Возвращенные_Талеры[Номер_Клиента[m]]);
- •If (Попытка_выдать_талер_клиенту(h))
- •Монитороподобные средства синхронизации
- •Механизм типа «критическая область»
- •Механизм типа «условная критическая область»
- •Var s : semaphore; считывание : boolean; m : t;
- •Раздел 3. Вычислительные структуры. Машины, управляемые контроллерами (устройствами управления)
- •Усовершенствованная структура вычислительной машины, управляемой контроллерОм
- •Системы с операционным конвейером
- •Мультипроцессорные системы
- •Транспьютеры
- •Распределение памяти в транспьютерах
- •Диспетчеризация процессов
- •Организация ВводА / выводА в транспьютере.
- •Гарвардская архитектура на примере процессоров семейства adsp
Права доступа к файлу
В операционной системе UNIX существует три базовых класса доступа к файлу, в каждом из которых установлены права доступа к файлу. Эти классы следующие:
класс владельца-пользователя;
класс членов группы, являющейся владельцем файлов;
класс остальных пользователей, кроме суперпользователя.
Поддерживается три типа прав доступа для каждого класса:
на чтение (r);
на запись (w);
на выполнение.(x).
При запуске команды ls –l в первом столбце выводится 10 символов:
-r w x r - - r - -
права доступа для остальных пользователей;
права доступа для группы-владельца;
права доступа для владельца файла;
тип файла.
Типы файла:
d каталог,
c специальное символьное устройство;
p поименованный FIFO файл;
- обычный файл;
b блоковое устройство.
Значения полей прав доступа:
- нет доступа по данной категории;
r на чтение;
w на запись;
x на выполнение.
Права доступа к файлу могут быть изменены только владельцем файла или суперпользователем.
Для этого используется команда:
chmod |
u |
+ |
r |
File1 |
File2 |
g |
- |
w | |||
o |
= |
x | |||
a |
|
|
Пример:
chmod a + w t.txt
chmod g + x - w r.out
Команда имеет следующие аргументы.
Первый символ определение классов доступа:
u владелец-пользователь;
g владелец-группа;
o остальные пользователи;
a все классы пользователей.
Следующий символ операция, которую следует произвести:
+ добавить права,
- удалить права,
= присвоить права.
Пример программы, определяющей права доступа:
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
int open(const char * pathname,int flags, [mode_t mode]);
int create(const char * pathname, mode_t mode);
…
fildes=create(“/tmp/fil1”,0644);
fildes=open(“/tmp/fil1”,O_WRONLY|O_CREAT|O_TRUNC,0664);
…
int chmod(const char * pathname, mode_t newmode);
…
if(chmod(“/tmp/file1”,0644)= = -1)
{
printf(“Ошибка изменения прав доступа \n”);
…
}
newmode – новый набор прав доступа.
В случае ошибки chmod возвращает -1.
Права на доступ к каталогам имеют специфические особенности. На пример, право чтения каталога позволяет получить лишь имена файлов, находящихся в данном каталоге. Для получения дополнительной информации, например выполняя команду ls –l, требуется обращение к индексным дескрипторам файла, что требует наличия прав на выполнение для каталога. Право выполнения каталога требуется и для команды cd (изменение каталога). Права чтения и выполнения для каталогов действуют независимо, т.е. можно задать право на выполнение и запретить право на чтение для каталога. Комбинацией этих прав можно добиться создания “темных каталогов”, файлы которых доступны только в том случае, если пользователь знает заранее их имена, так как получение списка файлов в таких каталогах запрещено.
Особое внимание для каталогов имеет право на запись. Создание и удаление файлов в каталоге требует изменения его содержимого, и следовательно, должно быть установлено право на запись в такой каталог. При этом не учитываются права доступа для самого файла, то есть для удаления файла из каталога не требуется каких-либо прав доступа к файлу, нужно иметь лишь право на запись в каталог, в котором содержится файл.
Операционная система производит проверку прав доступа при создании, открытии для чтения или записи, запуске на выполнение или удалении файлов. При этом выполняются следующие проверки:
- если операция запрашивается суперпользователем, то доступ разрешается, и никакие дополнительные проверки не производятся. Это позволяет администратору иметь неограниченный доступ ко всей файловой системе.
- если операция запрашивается владельцем файла, то если требуемое право доступа определено, доступ разрешается. В противном случае доступ запрещается.
- если операция запрашивается пользователем, являющимся членом группы-владельца файла, то если требуемое право доступа определено, доступ разрешается, в противном случае запрещается.
-если требуемое право доступа для прочих пользователей установлено, то доступ разрешается, в противном случае доступ запрещается.
Система проводит проверки в организации последовательности. К примеру, если пользователь является владельцем файла, то доступ определяется исключительно из прав доступа владельца. Права владельца группы не проверяются, даже если пользователь является членом владельца-группы.