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

From EjudgeWiki
Revision as of 05:25, 27 December 2021 by Cher (talk | contribs) (3.9.0)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

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

Время выхода: 27 декабря 2021 г.

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

Инсталляция ejudge на Fedora с нуля

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

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

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

  • Больше не требуется компиляция и инсталляция модифицированной версии ядра 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:

  • read_only_name — запрет редактирования поля name
  • enable_oauth — разрешение входа в данный турнир по OAUTH2
  • enable_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 — включает выполнение программ в защищенном контейнере.
  • enable_control_socket — включает режим управления контейнером через сокет.
  • lang_container_options — позволяет задать дополнительные опции для выполнения в контейнере в зависимости от языка программирования.
  • lang_max_rss_size — позволяет задать ограничение на максимальный объем потребленной оперативной памяти в зависимости от языка программирования.
  • max_rss_size — позволяет задать ограничение на максимальный объем потребленной оперативной памяти.