Difference between revisions of "Изменения в версии 3.9.0"
(...) |
(progress...) |
||
Line 6: | Line 6: | ||
[[Изоляция недоверенных процессов в контейнерах]] | [[Изоляция недоверенных процессов в контейнерах]] | ||
+ | |||
+ | Поддерживается исполнение тестируемых программ | ||
+ | в контейнере и компиляция программ в контейнере. | ||
+ | |||
+ | Это решает несколько проблем предыдущих версий: | ||
+ | |||
+ | * Больше не требуется компиляция и инсталляция модифицированной | ||
+ | версии ядра Linux. | ||
+ | * Поддерживается безопасное выполнение программ на языках | ||
+ | программирования, которые ранее были "небезопасными", | ||
+ | например, C#. | ||
+ | * Поддерживается безопасная компиляция программ на C/C++ (includebin | ||
+ | хак не работает). | ||
+ | |||
+ | Для использования этой возможности потребуется несложная настройка | ||
+ | системы ejudge, описанная в [[Изоляция недоверенных процессов в контейнерах|данном документе]]. | ||
[[Аутентификация с помощью OAUTH2]] | [[Аутентификация с помощью OAUTH2]] | ||
+ | |||
+ | Поддерживается аутентификация пользователей с помощью протокола OAUTH2. | ||
+ | Поддерживается регистрация пользователей при первом входе по OAUTH2. | ||
+ | В этой версии поддерживается аутентификация с помощью Google и VK. | ||
+ | Для других OAUTH2-провайдеров потребуется написание соответствующего | ||
+ | плагина. | ||
=== [[ejudge-change-contests]] === | === [[ejudge-change-contests]] === | ||
− | + | Эта программа позволяет менять настройки нескольких турниров | |
+ | из командной строки. Можно открывать доступ к турнирам, | ||
+ | закрывать доступ, добавлять привилегированных пользователей и т. п. | ||
=== [[ej-suid-container]] === | === [[ej-suid-container]] === | ||
− | Эта программа | + | Эта программа реализует запуск других программ в контейнере. |
− | в контейнере. | ||
=== [[ej-suid-update-scripts]] === | === [[ej-suid-update-scripts]] === | ||
− | + | Вспомогательная программа для обновления служебных программ, | |
+ | используемых для запуска программ на java, C#. | ||
=== [[ejudge.xml]] === | === [[ejudge.xml]] === | ||
− | force_container | + | Для поддержки безопасного выполнения программ добавился |
− | enable_compile_container | + | атрибут <tt>force_container</tt> элемента <tt>config</tt>. |
− | enable_oauth | + | |
+ | Для поддержки безопасной компиляции программ добавился | ||
+ | атрибут <tt>enable_compile_container</tt> элемента <tt>config</tt>. | ||
+ | |||
+ | Для поддержки аутентификации пользователей по протоколу OAUTH2 | ||
+ | добавился атрибут <tt>enable_oauth</tt> элемента <tt>config</tt>. | ||
=== [[contest.xml]] === | === [[contest.xml]] === | ||
− | <tt>[[contest.xml:read_only_name|read_only_name]]</tt> | + | Добавлены новые атрибуты в элемент <tt>contest</tt>: |
− | <tt>[[contest.xml:enable_oauth|enable_oauth]]</tt> | + | |
− | <tt>[[contest.xml: | + | * <tt>[[contest.xml:read_only_name|read_only_name]]</tt> — |
− | <tt>[[contest.xml: | + | запрет редактирования поля <tt>name</tt> |
+ | * <tt>[[contest.xml:enable_oauth|enable_oauth]]</tt> — | ||
+ | разрешение входа в данный турнир по OAUTH2 | ||
+ | * <tt>[[contest.xml:enable_reminders|enable_reminders]]</tt> — | ||
+ | разрешение ежедневных уведомлений о неотвеченных сообщениях, | ||
+ | неподтвержденных посылках. | ||
+ | |||
+ | Добавлен новый элемент <tt>[[contest.xml:oauth_rules|oauth_rules]]</tt> | ||
+ | элемента <tt>contest</tt>. Он позволяет управлять доступом | ||
+ | пользователей с помощью OAUTH2. | ||
=== [[.inf-файлы]] === | === [[.inf-файлы]] === | ||
− | <tt>allow_compile_error</tt> | + | Новые параметры: |
− | <tt>max_rss_size</tt> | + | |
+ | * <tt>allow_compile_error</tt> — на данном тесте компиляция должна | ||
+ | завершиться с ошибкой, вместо сданного текста программы будет | ||
+ | подставлена специальная заглушка. | ||
+ | |||
+ | * <tt>max_rss_size</tt> — установить ограничение на RSS (использованный | ||
+ | объем оперативной памяти) для данного теста. | ||
=== [[ej-jobs]] === | === [[ej-jobs]] === | ||
− | переписана | + | |
+ | Внешний интерфейс программы не изменился, но программа полностью | ||
+ | переписана. Теперь используется UNIX-сокет вместо обмена данными | ||
+ | через файлы. | ||
=== [[ej-super-run]] === | === [[ej-super-run]] === | ||
− | <tt>[[serve.cfg:problem:enable_extended_info|enable_extended_info]]</tt> поддерживается для проверяющих | + | Добавлена опция командной строки <tt>-x</tt> которая позволяет |
+ | задавать пользователя, под которым будут исполняться тестируемые | ||
+ | программы. Опция необходима, когда в рамках одного сервера | ||
+ | работают несколько экземпляров ej-super-run. | ||
+ | |||
+ | Конфигурационная переменная задачи | ||
+ | <tt>[[serve.cfg:problem:enable_extended_info|enable_extended_info]]</tt> | ||
+ | поддерживается и для проверяющих программ. | ||
=== [[ej-contests]] === | === [[ej-contests]] === | ||
− | + | Новые конфигурационные переменные языков программирования: | |
− | <tt>[[serve.cfg:language:container_options|container_options]]</tt> | + | |
− | <tt>[[serve.cfg:language:max_rss_size|max_rss_size]]</tt> | + | * <tt>[[serve.cfg:language:container_options|container_options]]</tt> — |
− | <tt>[[serve.cfg:language:run_max_rss_size|run_max_rss_size]]</tt> | + | позволяет задать дополнительные опции для запуска компилятора данного языка |
+ | в контейнере. | ||
+ | |||
+ | * <tt>[[serve.cfg:language:max_rss_size|max_rss_size]]</tt> — позволяет задать ограничение на максимальный потребленный объем оперативной памяти для компилятора. | ||
+ | |||
+ | * <tt>[[serve.cfg:language:run_max_rss_size|run_max_rss_size]]</tt> — позволяет переопределить ограничение на максимальный потребленный объем оперативной памяти для всех программ на этом языке программирования. | ||
+ | |||
+ | Новые конфигурационные переменные задач: | ||
+ | |||
+ | * <tt>[[serve.cfg:problem:allow_ip|allow_ip]]</tt> — позволяет задать ограничение на IP-адреса, с которых возможна сдача задачи. | ||
+ | |||
+ | * <tt>[[serve.cfg:problem:enable_container|enable_container]]</tt> — включает выполнение программ в защищенном контейнере. | ||
+ | |||
+ | * <tt>[[serve.cfg:problem:container_options|container_options]]</tt> — позволяет задать дополнительные опции для выполнения в контейнере. | ||
+ | |||
+ | * <tt>[[serve.cfg:problem:lang_container_options|lang_container_options]]</tt> — позволяет задать дополнительные опции для выполнения в контейнере в зависимости от языка программирования. | ||
+ | |||
+ | * <tt>[[serve.cfg:problem:max_rss_size|max_rss_size]]</tt> — позволяет задать ограничение на максимальный объем потребленной оперативной памяти. | ||
+ | |||
+ | * <tt>[[serve.cfg:problem:lang_max_rss_size|lang_max_rss_size]]</tt> — позволяет задать ограничение на максимальный объем потребленной оперативной памяти в зависимости от языка программирования. | ||
+ | |||
+ | * <tt>[[serve.cfg:problem:enable_control_socket|enable_control_socket]]</tt> — включает режим управления контейнером через сокет. | ||
+ | |||
+ | * <tt>[[serve.cfg:problem:checker_time_limit_ms|checker_time_limit_ms]]</tt> — задает ограничение на процессорное время для проверяющих программ, интеракторов, программ оценивания. | ||
+ | |||
+ | * <tt>[[serve.cfg:problem:checker_max_vm_size|checker_max_vm_size]]</tt> — задает ограничение на размер виртуального адресного пространства для проверяющих программ, интеракторов, программ оценивания. | ||
+ | |||
+ | * <tt>[[serve.cfg:problem:checker_max_stack_size|checker_max_stack_size]]</tt> — задает ограничение на стек для проверяющих программ, интеракторов, программ оценивания. | ||
− | + | <tt>[[serve.cfg:problem:checker_max_rss_size|checker_max_rss_size]]</tt> — задает ограничение на использованный объем оперативной памяти для проверяющих программ, интеракторов, программ оценивания. | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | <tt>[[serve.cfg:problem:checker_max_rss_size|checker_max_rss_size]]</tt> |
Revision as of 13:06, 18 December 2021
Навигация: Главная страница/Система ejudge/Разработка/История версий/Изменения в версии 3.9.0
Время выхода: г.
Изоляция недоверенных процессов в контейнерах
Поддерживается исполнение тестируемых программ в контейнере и компиляция программ в контейнере.
Это решает несколько проблем предыдущих версий:
- Больше не требуется компиляция и инсталляция модифицированной
версии ядра 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:
запрет редактирования поля 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 — задает ограничение на использованный объем оперативной памяти для проверяющих программ, интеракторов, программ оценивания.