я использую ejudge-2.3.7 с reuse-4.3.4 на linux-2.6.23.1-cher1
я столкнулся с проблемой возможности использования функции system, в частости на c++
при отправке кода с system("rm /home/ejudge/blabla.txt"); файл /home/ejudge/blabla.txt действительно удаляется. так как владельцем /home/judges также является пользователь ejudge, удалить рабочий каталог, человеку, знакомому с ejudge не составляет особого труда.
возможно, эта проблема решается средствами ejudge, но я, изучив документацию на wiki-разделе и "Краткие описания изменений", ничего по этому поводу не нашел.
заранее благодарен за любую помощь.
безопасность
Re: безопасность
Включите защищенный режим выполнения (secure_run). В веб-интерфейсе настройки это соответствует "Run programs securely".
Re: безопасность
И еще необходимо использовать патченное ядро Linux.
Re: безопасность
1)опция secure_run и так установлена
2)ядро патченное
может быть причина в том, что патч относительно старый? и мне стоит собрать пропатченное linux-2.6.23.12?
2)ядро патченное
может быть причина в том, что патч относительно старый? и мне стоит собрать пропатченное linux-2.6.23.12?
Re: безопасность
При выполнении configure для ejudge должно выдаваться примерно следующее:
Кроме того, в каталоге ejudge/extra/captest есть небольшой набор тестов.
Запустить их можно с помощью
Начало вывода должно быть примерно таким:
Code: Select all
checking for new secure execution interface in the running kernel... supported
Запустить их можно с помощью
Code: Select all
make && make tests
Code: Select all
./t1
t1: checking for disabled syscalls
t1: new interface detected
ok
./t2
t2: checking for one-time exec
t2: new interface detected
ok
Re: безопасность
Code: Select all
checking for new secure execution interface in the running kernel... supported
Code: Select all
./t6
t6: checking millisecond time limits
info: child signaled: 9
info: child user+sys ms: 500
ok
All tests have passed successfully
странно, но после того как я добавил в serve.cfg новый компилятор, рестартнул ejudge, функция system перестала выполняться и процессы перестали форкаться, однако результат сабмита не расценился как security violation.
а вот видимо для этого придется патчить 2.6.23.12 - судя по "новостям", поддержка security violation появилась начиная с этой версии
p.s. спасибо за помощь
Re: безопасность
Возможно, Вы установили опцию безопасного запуска "на лету" при работающем турнире. В случаях модификации турнира на лету нужно выполнять команду "Reload contest settings" в интерфейсе new-master или перезапускать ejudge, а иначе модификации не вступят в силу.
Re: безопасность
Насколько я понимаю, security violation проявляется довольно редко. Я, например, ни разу его не видел, хотя мне регулярно сдают программы с вызовом system("pause")