Изменения в версии 3.9.0

From EjudgeWiki
Revision as of 13:06, 18 December 2021 by Cher (talk | contribs) (progress...)

Навигация: Главная страница/Система ejudge/Разработка/История версий/Изменения в версии 3.9.0

Время выхода: г.

Предыдущая версия

Изоляция недоверенных процессов в контейнерах

Поддерживается исполнение тестируемых программ в контейнере и компиляция программ в контейнере.

Это решает несколько проблем предыдущих версий:

  • Больше не требуется компиляция и инсталляция модифицированной

версии ядра Linux.

  • Поддерживается безопасное выполнение программ на языках

программирования, которые ранее были "небезопасными", например, C#.

  • Поддерживается безопасная компиляция программ на C/C++ (includebin

хак не работает).

Для использования этой возможности потребуется несложная настройка системы ejudge, описанная в данном документе.

Аутентификация с помощью OAUTH2

Поддерживается аутентификация пользователей с помощью протокола OAUTH2. Поддерживается регистрация пользователей при первом входе по OAUTH2. В этой версии поддерживается аутентификация с помощью Google и VK. Для других OAUTH2-провайдеров потребуется написание соответствующего плагина.

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:

запрет редактирования поля name

разрешение входа в данный турнир по OAUTH2

разрешение ежедневных уведомлений о неотвеченных сообщениях, неподтвержденных посылках.

Добавлен новый элемент 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-contests

Новые конфигурационные переменные языков программирования:

позволяет задать дополнительные опции для запуска компилятора данного языка в контейнере.

  • max_rss_size — позволяет задать ограничение на максимальный потребленный объем оперативной памяти для компилятора.
  • run_max_rss_size — позволяет переопределить ограничение на максимальный потребленный объем оперативной памяти для всех программ на этом языке программирования.

Новые конфигурационные переменные задач:

  • allow_ip — позволяет задать ограничение на IP-адреса, с которых возможна сдача задачи.
  • enable_container — включает выполнение программ в защищенном контейнере.
  • container_options — позволяет задать дополнительные опции для выполнения в контейнере.
  • lang_container_options — позволяет задать дополнительные опции для выполнения в контейнере в зависимости от языка программирования.
  • max_rss_size — позволяет задать ограничение на максимальный объем потребленной оперативной памяти.
  • lang_max_rss_size — позволяет задать ограничение на максимальный объем потребленной оперативной памяти в зависимости от языка программирования.
  • enable_control_socket — включает режим управления контейнером через сокет.
  • checker_time_limit_ms — задает ограничение на процессорное время для проверяющих программ, интеракторов, программ оценивания.
  • checker_max_vm_size — задает ограничение на размер виртуального адресного пространства для проверяющих программ, интеракторов, программ оценивания.
  • checker_max_stack_size — задает ограничение на стек для проверяющих программ, интеракторов, программ оценивания.

checker_max_rss_size — задает ограничение на использованный объем оперативной памяти для проверяющих программ, интеракторов, программ оценивания.