Процессы

Отладка процессов

FreeBSD предусматривает упрощенную возможность управления и отладки выполнения процесса. Эта возможность, доступ к которой осуществляется посредством системного вызова ptrace, позволяет родительскому процессу контролировать выполнение порожденного процесса, манипулируя состоянием выполнения режимов пользователя и ядра. В частности, с помощью ptrace родительский процесс может выполнить в отношении порожденного процесса следующие операции:

Ограничения тюрьмы

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

Реализация тюрьмы

Реализация системного вызова jail проста. Выделяется и заполняется предоставленными аргументами структура данных prison}. Структура prison связывается со структурой процесса вызывающего процесса. Значение счетчика ссылок структуры prison устанавливается в единицу, и для установки корневого каталога тюрьмы осуществляется системный вызов chroot. После своего создания структура prison не может быть изменена.

Ограничения процессов с привилегиями суперпользователя.

Процессы, работающие с привилегиями суперпользователя, обнаружат, что на привилегированные вызовы, которые они могут делать, накладывается множество ограничений. Большинство ограничений спроектировано для ограничения деятельности, которая повлияла бы на ресурсы вне тюрьмы. Эти ограничения включают следующие запреты на:

Семантика тюрьмы

Двумя важными целями реализации тюрьмы являются следующие.

Механизм управления доступом (часть 2)

Этот абстрактный риск становится более ясным при использовании реального практического примера: многие провайдеры веб-служб используют FreeBSD для размещения веб-сайтов заказчиков. Эти провайдеры должны защитить целостность и конфиденциальность своих собственных файлов и служб от своих заказчиков. Они должны также защищать файлы и службы одного заказчика от (случайного или умышленного) доступа другим заказчиком.

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

Механизм управления доступом FreeBSD спроектирован для окружения с двумя видами пользователей: с административными привилегиями и без них. Часто желательно делегировать некоторые, но не все административные функции сторонам, не пользующимся доверием или пользующимся меньшим доверием, и в то же время установить обязательные для всей системы политики на взаимодействие и совместное использование процессов. Исторически попытки создания такого окружения были как трудными, так и дорогими.

Управление заданиями

Управление заданиями является возможностью, впервые предоставленной оболочкой С, а сегодня предоставляемой большинством оболочек. Оно позволяет поль­зователю управлять деятельностью групп процессов, называемых заданиями (jobs). Наиболее важными средствами, предоставляемыми управлением заданиями, являются возможности приостанавливать и повторно запускать задания и осуществлять мульти­плексирование доступа к терминалу пользователя. Управление терминалом в одно и то же время предоставляется лишь одному заданию, которое может читать с терминала и записывать в него.

Сеансы

Сеанс является набором одной или более групп процессов и может быть связан с устройством терминала. Основным использованием для сеансов является соединение в одно целое оболочки регистрации пользователя и заданий, которые он запускает, и создание изолированного окружения для процесса демона и его потомков. Любой процесс, не являющийся уже лидером группы процес­сов, может создать сеанс, используя системный вызов setsid и становясь лидером сеанса и единственным членом сеанса.

Группы процессов и сеансы

Группа процессов является совокупностью связанных процессов, таких, как конвейер оболочки, каждому из которых присвоен один и тот же идентификатор группы про­цессов. Идентификатор группы процессов равен PID начального участника группы процессов; таким образом, идентификаторы группы процессов разделяют пространст­во имен идентификаторов процессов. Когда создается новая группа процессов, ядро выделяет структуру группы процессов, которая будет с ней связана. Эта структура группы процессов записывается в хеш-таблицу таким образом, чтобы ее можно было быстро найти.

RSS-материал