Как создать среду песочницы с C ++?Linux

Ответить
Anonymous
 Как создать среду песочницы с C ++?

Сообщение Anonymous »

Я пытаюсь создать кодовую суть с способом безопасного запуска неназванного кода. Я уже ограничил время выполнения (с setitimer) и память (setrlimit). Я не хочу идти с чем -то вроде Firejail или другого существующего решения. Я хочу построить что -то легкое без необходимости привилегий корней (если это вообще возможно). < /P>
Я пытаюсь добавить здесь более одного UID и setUid в не пользовательский идентификатор, чтобы предотвратить удаление корня Но не могу отбросить здесь пиведжи. Если SETUID невозможна, я хотел бы, чтобы, по крайней мере, хотел бы убедиться, что процесс не сможет снять или сделать что -либо, кроме запуска отправленного кода. < /P>
// Helper to create a new namespace for isolation
static void setupSandbox() {
constexpr int UNSHARE_FLAGS { CLONE_NEWUSER | CLONE_NEWNS | CLONE_NEWNET | CLONE_NEWPID };
const int hostID {static_cast(getuid())}, nobodyUser {65534};

// Create new namespaces
if (unshare(UNSHARE_FLAGS) == -1) {
std::cerr

Подробнее здесь: https://stackoverflow.com/questions/793 ... ent-with-c
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Linux»