Механизм контроля доступа

Каждый пользователь и каждая группа пользователей обычно имеют символьное имя, а также уникальный числовой идентификатор. При выпол­нении процедуры логического входа в систему пользователь сообщает свое символьное имя и па­роль, а операционная система определяет соответст­вующие числовые иденти­фикаторы пользователя и групп, в которые он вхо­дит. Все идентификационные данные, в том числе имена и идентификаторы пользователей и групп, пароли пользователей, а также сведения о вхождении пользователя в группы, хранятся в специальном файле (файл /etc/passwd в UNIX) или специальной базе данных (в Windows NT).

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

Для файло­вых объектов этот список может включать следующие операции:

создание файла;

уничтожение файла;

открытие файла;

закрытие файла;

чтение файла;

запись в файл;

дополнение файла;

поиск в файле;

получение атрибутов файла;

установка новых значений атрибутов;

переименование;

выполнение файла;

чтение каталога;

смена владельца;

изменение прав доступа.

Набор файловых операций ОС может состоять из большого количества элементарных операций, а может включать всего несколько укрупнен-ных операций. Приведенный выше список является примером первого подхода, который позволяет достаточно тонко управлять правами доступа пользователей, но создает значительную нагрузку на администратора. Пример укрупненного подхода демонстрируют операционные системы семейства UNIX, в которых существует всего три операции с файлами и каталогами: читать (read, r), писать (write, w) и выполнить (execute, x).
Хотя в UNIX для операций ис­пользуется всего три назва­ния, в действительности им соответствует гораздо больше операций. Например, содержание операции выполнить зависит от того, к какому объекту она применя­ется. Если операция выполнить файл ин­туитивно понятна, то операция выпол­нить каталог интерпретируется как поиск в каталоге определенной записи. По­этому администратор UNIX, по сути, располагает большим списком операций, чем это кажется на первый взгляд.

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

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

Практически во всех операционных системах матрица прав доступа хра­нится «по частям», т.е. для каждого файла или каталога создается так на­зываемый список управления доступом (Access Control List, ACL), в котором описываются права на выполнение операций пользователей и групп пользо­вателей по отноше­нию к этому файлу или каталогу. Список управления дос­тупа является частью характеристик файла или каталога и хранится на диске в соответствующей об­ласти, например в индексном дескрипторе inode фай­ловой системы ufs. He все файловые системы поддерживают списки управ­ления доступом, например, его не поддерживает файловая система FAT, так как она разрабатывалась для одно­пользовательской однопрограммной опера­ционной системы MS-DOS, для кото­рой задача защиты от несанкциониро­ванного доступа неактуальна.