Как создать среду песочницы с 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

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