Чтобы понять, что я спрашиваю, важно отличать одно из нескольких применений SUID в Unix.
У меня есть проект, который использует исполняемый файл в ПУТИ пользователя, который принадлежит проекту и в котором установлен бит SUID. Таким образом, когда он запускается, он запускается в контексте владельца файла, а не вызывающего пользователя. Таким образом, он имеет доступ к вещам, которых нет у пользователя, и, таким образом, эти вещи защищены от пользователя обычными средствами защиты файловой системы. Это работает достаточно хорошо. Планируется перевести проект на архитектуру клиент-сервер, но это займет некоторое время. В то же время, как я могу повторить этот тип поведения в системах Windows?
Обратите внимание, что исполняемые файлы проекта не вызывают библиотечный вызов SETUID, хотя, честно говоря, это было бы отличной возможностью добавить, на мой взгляд, с учетом того, что делает проект. Проекту не нужны системные привилегии root. Первая проблема безопасности заключается в том, что ему необходимо защищать свои собственные файлы от пользователя (которым является любой пользователь, кроме владельца файла), и было бы очень хорошо, если бы он имел возможность переключаться в «контекст пользователя» для доступа к файлу Система, как если бы это был вызывающий пользователь. (Таким образом, было бы легче определить, что нормально для проекта, а что нет.)
Проект написан на комбинации C и Java - программа на C с набором SUID вызывает код Java ...
Мне интересно знать все такие механизмы, и я особенно сосредоточен на тех, которые:
- Подходит для C и Java, а;
- Простота реализации для программистов не из Windows, и;
- Требовать минимального кодирования, уникального для Windows.
Если некоторые решения превосходят вас, поделитесь своими мыслями о том, что вам известно об этом.
ПРИМЕЧАНИЯ:
- LogonUser: требуется пароль в виде обычного текста. Как это может быть ответом?
- RunAs: Требуется ввести пароль на PROMPT! ... как с LogonUser только хуже; Я не понимаю, как это ответ.