Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
UNIX_Konsp+Present_Kostiv / Введение в безопасность UNIX.doc
Скачиваний:
27
Добавлен:
12.02.2016
Размер:
299.01 Кб
Скачать

Подмена идентификатора процесса

Презентация 5-07: подмена идентификатора процесса

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

Подмена идентификатора в том случае, если процесс запустит вместо себя при помощи системного вызова exec() программу из файла, в правах доступа которого установлен бит подмены идентификатора пользователя (SUID-бит, обозначается s в символьной записи прав доступа). Запущенный из этого файла процесс получит исполнительный идентификатор владельца (EUID) файла вместо идентификатора владельца процесса-родителя (см. Рисунок 2.19, «Подмена идентификатора процесса»), благодаря чему UID процесса сохраняет информацию о том, кто на самом деле запустил программу.

Рисунок 2.19. Подмена идентификатора процесса

В современных UNIX-системах предусмотрен и ещё один дополнительный атрибут — SetGID, бит подмены идентификатора группы. Этот механизм работает совершенно аналогично подмене идентификатора пользователя, с тем отличием, что процесс, запущенный из файла с атрибутом SetGID, получает идентификатор группы-владельца файла, UID же его остается неизменным. Использование SetGID позволяет весьма гибким образом контролировать ситуацию повышения прав доступа процесса.

Особое значение имеют атрибуты подмены идентификатора (SetUID и SetGID), установленные на каталогах (о других правах доступа для каталогов сказано в разделе «Разделяемые каталоги») — для каталогов тоже используются права на исполнение, хотя и имеют другой смысл, чем у исполняемых файлов. Атрибут SetGID, установленный на каталоге, указывает, что файлы и подкаталоги, создаваемые внутри этого подкаталога любыми процессами, будут получать тот же идентификатор группы, что и сам каталог. Причем подкаталоги будут также наследовать атрибут SetGID. Такой механизм используется для организации общих каталогов, файлы в которых должны быть доступны на равных условиях группе пользователей. Атрибут SetUID, установленный на каталоге, просто игнорируется.

Атрибуты подмены идентификаторов пользователя и группы несут потенциальную угрозу безопасности системы и должны использоваться с осторожностью.

Ограничения базовой модели доступа и её расширения

Простота системы прав доступа UNIX приводит к некоторым ограничениям. К примеру, стандартными средствами UNIX невозможно создать такое положение вещей, когда одна группа пользователей могла бы только читать из файла, другая — только запускать его, а всем остальным файл вообще не был бы доступен. Другое дело, что такое положение вещей встречается нечасто.

Со временем в различных версиях UNIX стали появляться расширения прав доступа, позволяющие устанавливать права на отдельные объекты системы. Поначалу это были так называемые флаги — дополнительные атрибуты файла, не позволяющие, например, переименовывать его или удалять из него информацию при записи (можно только дописывать). Флаги не устраняют главного недостатка, зато их легко организовать без изменения файловой системы: каждый флаг занимает ровно один бит.

Многие современные файловые системы UNIX поддерживают также списки доступа (ACL), с помощью которых можно для каждого объекта задавать права всех субъектов на доступ к нему.

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

Соседние файлы в папке UNIX_Konsp+Present_Kostiv