Difference between revisions of "Изменения в версии 3.9.0"

From EjudgeWiki
(...)
(...)
Line 4: Line 4:
  
 
[[Изменения в версии 3.8.0|Предыдущая версия]]
 
[[Изменения в версии 3.8.0|Предыдущая версия]]
 +
 +
[[Инсталляция ejudge на Fedora с нуля]]
  
 
[[Изоляция недоверенных процессов в контейнерах]]
 
[[Изоляция недоверенных процессов в контейнерах]]
Line 108: Line 110:
 
* <code>[[serve.cfg:problem:allow_ip|allow_ip]]</code> &mdash; позволяет задать ограничение на IP-адреса, с которых возможна сдача задачи.
 
* <code>[[serve.cfg:problem:allow_ip|allow_ip]]</code> &mdash; позволяет задать ограничение на IP-адреса, с которых возможна сдача задачи.
  
* <code>[[serve.cfg:problem:enable_container|enable_container]]</code> &mdash; включает выполнение программ в защищенном контейнере.
+
* <code>[[serve.cfg:problem:checker_max_rss_size|checker_max_rss_size]]</code> &mdash; задает ограничение на использованный объем оперативной памяти для проверяющих программ, интеракторов, программ оценивания.
  
* <code>[[serve.cfg:problem:container_options|container_options]]</code> &mdash; позволяет задать дополнительные опции для выполнения в контейнере.
+
* <code>[[serve.cfg:problem:checker_max_stack_size|checker_max_stack_size]]</code> &mdash; задает ограничение на стек для проверяющих программ, интеракторов, программ оценивания.
  
* <code>[[serve.cfg:problem:lang_container_options|lang_container_options]]</code> &mdash; позволяет задать дополнительные опции для выполнения в контейнере в зависимости от языка программирования.
+
* <code>[[serve.cfg:problem:checker_max_vm_size|checker_max_vm_size]]</code> &mdash; задает ограничение на размер виртуального адресного пространства для проверяющих программ, интеракторов, программ оценивания.
  
* <code>[[serve.cfg:problem:max_rss_size|max_rss_size]]</code> &mdash; позволяет задать ограничение на максимальный объем потребленной оперативной памяти.
+
* <code>[[serve.cfg:problem:checker_time_limit_ms|checker_time_limit_ms]]</code> &mdash; задает ограничение на процессорное время для проверяющих программ, интеракторов, программ оценивания.
  
* <code>[[serve.cfg:problem:lang_max_rss_size|lang_max_rss_size]]</code> &mdash; позволяет задать ограничение на максимальный объем потребленной оперативной памяти в зависимости от языка программирования.
+
* <code>[[serve.cfg:problem:container_options|container_options]]</code> &mdash; позволяет задать дополнительные опции для выполнения в контейнере.
  
* <code>[[serve.cfg:problem:enable_control_socket|enable_control_socket]]</code> &mdash; включает режим управления контейнером через сокет.
+
* <code>[[serve.cfg:problem:enable_container|enable_container]]</code> &mdash; включает выполнение программ в защищенном контейнере.
  
* <code>[[serve.cfg:problem:checker_time_limit_ms|checker_time_limit_ms]]</code> &mdash; задает ограничение на процессорное время для проверяющих программ, интеракторов, программ оценивания.
+
* <code>[[serve.cfg:problem:lang_container_options|lang_container_options]]</code> &mdash; позволяет задать дополнительные опции для выполнения в контейнере в зависимости от языка программирования.
  
* <code>[[serve.cfg:problem:checker_max_vm_size|checker_max_vm_size]]</code> &mdash; задает ограничение на размер виртуального адресного пространства для проверяющих программ, интеракторов, программ оценивания.
+
* <code>[[serve.cfg:problem:lang_max_rss_size|lang_max_rss_size]]</code> &mdash; позволяет задать ограничение на максимальный объем потребленной оперативной памяти в зависимости от языка программирования.
  
* <code>[[serve.cfg:problem:checker_max_stack_size|checker_max_stack_size]]</code> &mdash; задает ограничение на стек для проверяющих программ, интеракторов, программ оценивания.
+
* <code>[[serve.cfg:problem:max_rss_size|max_rss_size]]</code> &mdash; позволяет задать ограничение на максимальный объем потребленной оперативной памяти.
  
* <code>[[serve.cfg:problem:checker_max_rss_size|checker_max_rss_size]]</code> &mdash; задает ограничение на использованный объем оперативной памяти для проверяющих программ, интеракторов, программ оценивания.
+
* <code>[[serve.cfg:problem:enable_control_socket|enable_control_socket]]</code> &mdash; включает режим управления контейнером через сокет.

Revision as of 09:18, 24 December 2021

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

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

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

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