Запустить ненадежную C-программу в песочнице в Linux, которая мешает ей открывать файлы, разветвляться и т. Д.? - PullRequest
106 голосов
/ 22 ноября 2010

Мне было интересно, существует ли способ запустить ненадежную программу на C в песочнице в Linux. Что-то, что помешало бы программе открыть файлы, или сетевые подключения, или разветвление, exec и т. Д.?

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

Ответы [ 11 ]

0 голосов
/ 19 сентября 2014

хорошо, благодаря всем ответам, они мне очень помогли.Но я бы не предложил ни один из них в качестве решения для человека, который задал оригинальный вопрос.Все перечисленные инструменты требуют большой работы с целью проверки кода ученика в качестве преподавателя, репетитора, проф.Лучшим способом в этом случае будет, на мой взгляд, виртуальная коробка.Хорошо, она эмулирует полную x68-систему и не имеет никакого отношения к смыслу «песочницы» таким образом, но если я представлю своего учителя по программированию, это будет лучше для него.Так что «apt-get install virtualbox» в системах на основе Debian, все остальные перейдут на http://virtualbox.org/, создайте виртуальную машину, добавьте iso, нажмите «Установить», подождите некоторое время и повезет.Это будет гораздо проще использовать для настройки user-mode-linux или выполнения каких-то тяжелых действий ...

И если у вас есть страх, что ваши ученики взломают вас, я думаю, у вас есть проблема с авторитетом иРешением для этого было бы угрожать им тем, что вы будете судиться с живыми дневными лучами из них, если вы сможете доказать лишь один кусочек вредоносного ПО в работе, которую они вам дают ...

Также, если есть класс и 1%это так хорошо, как он мог делать такие вещи, не утомлять их такими простыми задачами и дать им несколько больших, где они должны еще немного кодировать.Интегративное обучение лучше всего подходит для всех, поэтому не используйте старые заблокированные структуры ...

И, разумеется, никогда не используйте один и тот же компьютер для важных вещей (например, для написания аттестаций и экзаменов), которые вы используете для таких вещей, как просмотр страниц.Интернет и программное обеспечение для тестирования.

Используйте автономный компьютер для важных вещей и онлайновый компьютер для всех остальных.

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

... где я был ... для всех остальных:

счастливого взлома !!

...