Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Otvety k gosam.docx
Скачиваний:
3
Добавлен:
01.07.2025
Размер:
4.66 Mб
Скачать

2.Полномочное разграничение доступа без контроля информационных потоков (мандатное)

Правила формулируются следующим образом:

  1. для каждого объекта ОС существует владелец;

  2. владелец объекта может произвольно ограничивать доступ других субъектов к данному объекту;

  3. для каждой тройки «субъект- объект- метод» возможность доступа определена однозначно;

  4. существует хотя бы один привилегированный пользователь, который может обратиться к любому объекту по любому методу доступа;

  5. во множестве объектов доступа ОС выделяется подмножество объектов полномочного разграничения доступа. Каждый объект полномочного разграничения доступа имеет гриф секретности. Чем выше числовое значение грифа, тем секретнее объект. Если объект не является объектом разграничения доступа или он не секретен, администратор может обратиться к нему по любому методу.

  6. каждый субъект доступа имеет уровень допуска. Чем выше числовое значение уровня допуска, тем больший доступ имеет субъект.

  7. 1.если объект является объектом полномочного разграничения доступа

2.если гриф секретности объекта строго выше уровня допуска

3.если субъект открывает объект в режиме, допускающем чтение информации,

то доступ субъекта к объекту запрещен независимо от состояния матрицы доступа.

3.Обработка ошибок в unix. Функции выдачи сообщений об ошибках.

Важно всегда проверять успешное завершение каждой операции (системного вызова). Чтобы использовать средства обработки ошибок программа должна включить заголовочный файл "errno.h".

Проверка ошибок

Основные системные вызовы Linux почти всегда при ошибке возвращают –1 (иногда - нулевой указатель NULL, или константу EOF, которая определена для той цели). При успешном завершении 0 (или положительное значение).

Нужно знать причину ошибки. Для этого у процесса есть специальная предопределенная переменная errno. Всякий раз, когда системный вызов завершается с ошибкой, errno устанавливается в одно из значений из набора предопределенных значений ошибок, которые определены в <errno.h>. Стандарт POSIX 2001 определяет большое число возможных ошибок, большинство из которых относится к сетям, межпроцессному взаимодействию или другим специальным задачам. Будем рассматривать errno как простую переменную типа int. Начальное значение errno при запуске программы равно нулю.

В man для каждого системного вызова описаны возможные значения errno, которые могут иметь место. Возможные значения определены через зарезервированные (операционной системой) символические имена. Имена начинаются с "E", содержат символы верхнего регистра или цифры (например, EACCES, EIO, EEXIST, …).

Сообщения об ошибках

Библиотека имеет функции и переменные, разработанные, чтобы облегчить вывод информативных сообщений об ошибках в обычном формате. Функции strerror(3) и perror(3) выдают стандартное сообщение об ошибках для данного кода ошибки; переменная program_invocation_short_name предоставляет удобный доступ к имени программы, которая столкнулась с ошибкой.

Функция strerror возвращает указатель на строку, соответствующую номеру ошибки, заданному параметром errnum. Значение errnum обычно исходит из переменной errno.

Функция perror печатает сообщение об ошибках в поток stderr.

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

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