Изменения в версии 3.9.0
Навигация: Главная страница/Система ejudge/Разработка/История версий/Изменения в версии 3.9.0
Время выхода: г.
Инсталляция ejudge на Fedora с нуля
Изоляция недоверенных процессов в контейнерах
Поддерживается исполнение тестируемых программ в контейнере и компиляция программ в контейнере.
Это решает несколько проблем предыдущих версий:
- Больше не требуется компиляция и инсталляция модифицированной версии ядра Linux.
- Поддерживается безопасное выполнение программ на языках программирования, которые ранее были "небезопасными", например, C#.
- Поддерживается безопасная компиляция программ на C/C++ (includebin хак не работает).
Для использования этой возможности потребуется несложная настройка системы ejudge, описанная в данном документе.
Аутентификация с помощью OAUTH2
Поддерживается аутентификация пользователей с помощью протокола OAUTH2. Поддерживается регистрация пользователей при первом входе по OAUTH2. В этой версии поддерживается аутентификация с помощью Google и VK. Для других OAUTH2-провайдеров потребуется написание соответствующего плагина.
Contents
ejudge-change-contests
Эта программа позволяет менять настройки нескольких турниров из командной строки. Можно открывать доступ к турнирам, закрывать доступ, добавлять привилегированных пользователей и т. п.
ej-suid-container
Эта программа реализует запуск других программ в контейнере.
ej-suid-update-scripts
Вспомогательная программа для обновления служебных программ, используемых для запуска программ на java, C#.
ejudge.xml
Для поддержки безопасного выполнения программ добавился
атрибут force_container
элемента config
.
Для поддержки безопасной компиляции программ добавился
атрибут enable_compile_container
элемента config
.
Для поддержки аутентификации пользователей по протоколу OAUTH2
добавился атрибут enable_oauth
элемента config
.
contest.xml
Добавлены новые атрибуты в элемент contest
:
read_only_name
— запрет редактирования поляname
enable_oauth
— разрешение входа в данный турнир по OAUTH2enable_reminders
— разрешение ежедневных уведомлений о неотвеченных сообщениях, неподтвержденных посылках.
Добавлен новый элемент oauth_rules
элемента contest
. Он позволяет управлять доступом
пользователей с помощью OAUTH2.
.inf-файлы
Новые параметры:
allow_compile_error
— на данном тесте компиляция должна завершиться с ошибкой, вместо сданного текста программы будет подставлена специальная заглушка.
max_rss_size
— установить ограничение на RSS (использованный объем оперативной памяти) для данного теста.
ej-jobs
Внешний интерфейс программы не изменился, но программа полностью переписана. Теперь используется UNIX-сокет вместо обмена данными через файлы.
ej-super-run
Добавлена опция командной строки -x
которая позволяет
задавать пользователя, под которым будут исполняться тестируемые
программы. Опция необходима, когда в рамках одного сервера
работают несколько экземпляров ej-super-run.
Конфигурационная переменная задачи
enable_extended_info
поддерживается и для проверяющих программ.
ej-compile
В режиме компиляции в контейнерах программа ej-compile работает под обычным пользователем, а не под пользователем ejcompile.
ej-contests
Новые конфигурационные переменные языков программирования:
container_options
— позволяет задать дополнительные опции для запуска компилятора данного языка в контейнере.
max_rss_size
— позволяет задать ограничение на максимальный потребленный объем оперативной памяти для компилятора.
run_max_rss_size
— позволяет переопределить ограничение на максимальный потребленный объем оперативной памяти для всех программ на этом языке программирования.
Новые конфигурационные переменные задач:
allow_ip
— позволяет задать ограничение на IP-адреса, с которых возможна сдача задачи.
checker_max_rss_size
— задает ограничение на использованный объем оперативной памяти для проверяющих программ, интеракторов, программ оценивания.
checker_max_stack_size
— задает ограничение на стек для проверяющих программ, интеракторов, программ оценивания.
checker_max_vm_size
— задает ограничение на размер виртуального адресного пространства для проверяющих программ, интеракторов, программ оценивания.
checker_time_limit_ms
— задает ограничение на процессорное время для проверяющих программ, интеракторов, программ оценивания.
container_options
— позволяет задать дополнительные опции для выполнения в контейнере.
enable_container
— включает выполнение программ в защищенном контейнере.
lang_container_options
— позволяет задать дополнительные опции для выполнения в контейнере в зависимости от языка программирования.
lang_max_rss_size
— позволяет задать ограничение на максимальный объем потребленной оперативной памяти в зависимости от языка программирования.
max_rss_size
— позволяет задать ограничение на максимальный объем потребленной оперативной памяти.
enable_control_socket
— включает режим управления контейнером через сокет.