Difference between revisions of "Изменения в версии 3.9.0"
(Created page with "Навигация: Главная страница/Система ejudge/Разработка/История версий/Изменения в в...") |
(3.9.1 released) |
||
| (15 intermediate revisions by the same user not shown) | |||
| Line 1: | Line 1: | ||
Навигация: [[Main Page|Главная страница]]/[[Система ejudge]]/[[Разработка]]/[[История версий]]/[[Изменения в версии 3.9.0]] | Навигация: [[Main Page|Главная страница]]/[[Система ejudge]]/[[Разработка]]/[[История версий]]/[[Изменения в версии 3.9.0]] | ||
| − | Время выхода: | + | Время выхода: 27 декабря 2021 г. |
| − | [[Изменения в версии 3.8.0|Предыдущая версия]] | + | [[Изменения в версии 3.8.0|Предыдущая версия]] [[Изменения в версии 3.9.1|Следующая версия]] |
| + | |||
| + | [[Инсталляция 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]] === | ||
| + | |||
| + | Для поддержки безопасного выполнения программ добавился | ||
| + | атрибут <code>force_container</code> элемента <code>config</code>. | ||
| + | |||
| + | Для поддержки безопасной компиляции программ добавился | ||
| + | атрибут <code>enable_compile_container</code> элемента <code>config</code>. | ||
| + | |||
| + | Для поддержки аутентификации пользователей по протоколу OAUTH2 | ||
| + | добавился атрибут <code>enable_oauth</code> элемента <code>config</code>. | ||
| + | |||
| + | === [[contest.xml]] === | ||
| + | |||
| + | Добавлены новые атрибуты в элемент <code>contest</code>: | ||
| + | |||
| + | * <code>[[contest.xml:read_only_name|read_only_name]]</code> — запрет редактирования поля <code>name</code> | ||
| + | * <code>[[contest.xml:enable_oauth|enable_oauth]]</code> — разрешение входа в данный турнир по OAUTH2 | ||
| + | * <code>[[contest.xml:enable_reminders|enable_reminders]]</code> — разрешение ежедневных уведомлений о неотвеченных сообщениях, неподтвержденных посылках. | ||
| + | |||
| + | Добавлен новый элемент <code>[[contest.xml:oauth_rules|oauth_rules]]</code> | ||
| + | элемента <code>contest</code>. Он позволяет управлять доступом | ||
| + | пользователей с помощью OAUTH2. | ||
| + | |||
| + | === [[.inf-файлы]] === | ||
| + | |||
| + | Новые параметры: | ||
| + | |||
| + | * <code>allow_compile_error</code> — на данном тесте компиляция должна завершиться с ошибкой, вместо сданного текста программы будет подставлена специальная заглушка. | ||
| + | |||
| + | * <code>max_rss_size</code> — установить ограничение на RSS (использованный объем оперативной памяти) для данного теста. | ||
| + | |||
| + | === [[ej-jobs]] === | ||
| + | |||
| + | Внешний интерфейс программы не изменился, но программа полностью | ||
| + | переписана. Теперь используется UNIX-сокет вместо обмена данными | ||
| + | через файлы. | ||
| + | |||
| + | === [[ej-super-run]] === | ||
| + | |||
| + | Добавлена опция командной строки <code>-x</code> которая позволяет | ||
| + | задавать пользователя, под которым будут исполняться тестируемые | ||
| + | программы. Опция необходима, когда в рамках одного сервера | ||
| + | работают несколько экземпляров ej-super-run. | ||
| + | |||
| + | Конфигурационная переменная задачи | ||
| + | <code>[[serve.cfg:problem:enable_extended_info|enable_extended_info]]</code> | ||
| + | поддерживается и для проверяющих программ. | ||
| + | |||
| + | === [[ej-compile]] === | ||
| + | |||
| + | В режиме компиляции в контейнерах программа ej-compile работает под обычным пользователем, а не под пользователем ejcompile. | ||
| + | |||
| + | === [[ej-contests]] === | ||
| + | |||
| + | Новые конфигурационные переменные языков программирования: | ||
| + | |||
| + | * <code>[[serve.cfg:language:container_options|container_options]]</code> — позволяет задать дополнительные опции для запуска компилятора данного языка в контейнере. | ||
| + | |||
| + | * <code>[[serve.cfg:language:max_rss_size|max_rss_size]]</code> — позволяет задать ограничение на максимальный потребленный объем оперативной памяти для компилятора. | ||
| + | |||
| + | * <code>[[serve.cfg:language:run_max_rss_size|run_max_rss_size]]</code> — позволяет переопределить ограничение на максимальный потребленный объем оперативной памяти для всех программ на этом языке программирования. | ||
| + | |||
| + | Новые конфигурационные переменные задач: | ||
| + | |||
| + | * <code>[[serve.cfg:problem:allow_ip|allow_ip]]</code> — позволяет задать ограничение на IP-адреса, с которых возможна сдача задачи. | ||
| + | |||
| + | * <code>[[serve.cfg:problem:checker_max_rss_size|checker_max_rss_size]]</code> — задает ограничение на использованный объем оперативной памяти для проверяющих программ, интеракторов, программ оценивания. | ||
| + | |||
| + | * <code>[[serve.cfg:problem:checker_max_stack_size|checker_max_stack_size]]</code> — задает ограничение на стек для проверяющих программ, интеракторов, программ оценивания. | ||
| + | |||
| + | * <code>[[serve.cfg:problem:checker_max_vm_size|checker_max_vm_size]]</code> — задает ограничение на размер виртуального адресного пространства для проверяющих программ, интеракторов, программ оценивания. | ||
| + | |||
| + | * <code>[[serve.cfg:problem:checker_time_limit_ms|checker_time_limit_ms]]</code> — задает ограничение на процессорное время для проверяющих программ и программ оценивания. | ||
| + | |||
| + | * <code>[[serve.cfg:problem:container_options|container_options]]</code> — позволяет задать дополнительные опции для выполнения в контейнере. | ||
| + | |||
| + | * <code>[[serve.cfg:problem:enable_container|enable_container]]</code> — включает выполнение программ в защищенном контейнере. | ||
| + | |||
| + | * <code>[[serve.cfg:problem:enable_control_socket|enable_control_socket]]</code> — включает режим управления контейнером через сокет. | ||
| + | |||
| + | * <code>[[serve.cfg:problem:lang_container_options|lang_container_options]]</code> — позволяет задать дополнительные опции для выполнения в контейнере в зависимости от языка программирования. | ||
| + | |||
| + | * <code>[[serve.cfg:problem:lang_max_rss_size|lang_max_rss_size]]</code> — позволяет задать ограничение на максимальный объем потребленной оперативной памяти в зависимости от языка программирования. | ||
| + | |||
| + | * <code>[[serve.cfg:problem:max_rss_size|max_rss_size]]</code> — позволяет задать ограничение на максимальный объем потребленной оперативной памяти. | ||
Latest revision as of 10:54, 23 March 2022
Навигация: Главная страница/Система ejudge/Разработка/История версий/Изменения в версии 3.9.0
Время выхода: 27 декабря 2021 г.
Предыдущая версия Следующая версия
Инсталляция 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— запрет редактирования поляnameenable_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— включает выполнение программ в защищенном контейнере.
enable_control_socket— включает режим управления контейнером через сокет.
lang_container_options— позволяет задать дополнительные опции для выполнения в контейнере в зависимости от языка программирования.
lang_max_rss_size— позволяет задать ограничение на максимальный объем потребленной оперативной памяти в зависимости от языка программирования.
max_rss_size— позволяет задать ограничение на максимальный объем потребленной оперативной памяти.