Создание процессов с ограничением прав

Тема в разделе "Общие вопросы по С и С++", создана пользователем XCeption, 9 ноя 2008.

Статус темы:
Закрыта.
  1. XCeption

    XCeption Гость

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

    Пытаясь найти решение, я начал естеcтвенно с CreateProcess() и структуры SECURITY_ATTRIBUTES, разобрался с организацией прав доступа к объектам (списки DACL и SACL, ACEs), и пришел к выводу, что вся эта схема ровно противоположна тому, что нужно мне :) Т.е. с помощью SECURITY_ATTRIBUTES я могу указать кто из пользователей и что сможет или не сможет делать с созданным процессом, а как же указать, что может делать данный процесс?
    Согласно логике организации доступа процессов к объектам (маркер доступа у процесса и дескриптор безопасности у объекта) получается, что для решения проблемы необходимо запустить процесс под именем отдельного пользователя (с этим как раз проблем нет), а перед этим создать дескриптор безопасности, указав в нем данного пользователя и запретив ему нужные операции, затем применить данный дискриптор ко всем объектам системы(!) - вот это уже по-моему бред... и чувствую не туда я уже пошел.
    Помогите найти верный путь :)
     
  2. zubr

    zubr Гость

    На самом деле все достаточно просто - перехват API функций (CreateFile, CreateProcess) путем подмены таблицы импорта запускаемого процесса.
     
  3. XCeption

    XCeption Гость

    Да, соверешенно верно, с помощью перехвата API-функций лучше такое реализовать.
    Вот материал интересный по теме: http://www.rsdn.ru/article/baseserv/IntercetionAPI.xml
    Вопрос можно считать исчерпанным.
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей