Difference between revisions of "Ej-suid-update-scripts"

From EjudgeWiki
 
(...)
 
Line 1: Line 1:
 
Навигация: [[Main Page|Главная страница]]/[[Система ejudge]]/[[Использование]]/[[Общая архитектура системы]]/[[ej-suid-update-scripts]]
 
Навигация: [[Main Page|Главная страница]]/[[Система ejudge]]/[[Использование]]/[[Общая архитектура системы]]/[[ej-suid-update-scripts]]
  
TODO документация
+
Программа доступна с версии [[Изменения в версии 3.9.0|3.9.0]].
 +
 
 +
Для запуска программ на языках, требующих виртуальной машины,
 +
такой как jvm, mono, dotnet или valgrind,
 +
в ejudge использовались вспомогательные
 +
скрипты <code>rundotnet</code>, <code>runjava</code>, <code>runmono</code>,
 +
<code>runvg</code>. Эти скрипты находились в том же каталоге,
 +
в котором находятся скрипты компиляции <code>gcc</code>
 +
и прочие (<code>EJUDGE_CONTESTS_HOME_DIR/compile/scripts</code>,
 +
например, <code>/home/judges/compile/scripts</code>),
 +
и кроме того, для работы им требовались конфигурационные файлы
 +
<code>gcc.cfg</code>, которые находятся
 +
в <code>EJUDGE_LANG_CONFIG_DIR</code>, например
 +
<code>/home/judges/compile/conf/lang.d</code>.
 +
 
 +
При выполнении программ это не очень хорошо по следующим причинам:
 +
* требуется доступ к каталогу /home/judges/compile
 +
* скрипты запуска используют дополнительные конфигурационные файлы
 +
 
 +
Чтобы решить эти проблемы для запуска программ на языках,
 +
требующих виртуальные машины, используются скрипты
 +
<code>rundotnet2</code>, <code>runjava2</code>, <code>runmono2</code>,
 +
<code>runvg2</code>, которые размещаются в каталоге
 +
<code>EJUDGE_SCRIPT_DIR/lang</code>, например,
 +
<code>/opt/ejudge/libexec/ejudge/lang</code>. Конфигурационные
 +
настройки соответствующих языков программирования находятся
 +
в самих скриптах, то есть для работы им не требуются никакие
 +
дополнительные конфигурационные файлы.
 +
 
 +
Но пользователь, под которым система ejudge компилируется и инсталлируется,
 +
может отличаться от пользователя, под которым система работает,
 +
и под которым конфигурируются языки программирования. Файлы
 +
в каталоге <code>/opt/ejudge</code> могут иметь владельца, например,
 +
root, а языки программирования конфигурируются под пользователем
 +
ejudge. Пользователь ejudge может не иметь доступа на запись в
 +
каталог <code>EJUDGE_SCRIPT_DIR/lang</code>.
 +
 
 +
Программа [[ej-suid-update-scripts]] копирует скрипты запуска виртуальных
 +
машин в каталог <code>EJUDGE_SCRIPT_DIR/lang</code> и устанавливает
 +
им правильные права доступа. Программа запускается автоматически
 +
программой [[ejudge-configure-compilers]] при сохранении скриптов.
 +
 
 +
Использование:
 +
 
 +
ej-suid-update-scripts all

Latest revision as of 06:51, 23 December 2021

Навигация: Главная страница/Система ejudge/Использование/Общая архитектура системы/ej-suid-update-scripts

Программа доступна с версии 3.9.0.

Для запуска программ на языках, требующих виртуальной машины, такой как jvm, mono, dotnet или valgrind, в ejudge использовались вспомогательные скрипты rundotnet, runjava, runmono, runvg. Эти скрипты находились в том же каталоге, в котором находятся скрипты компиляции gcc и прочие (EJUDGE_CONTESTS_HOME_DIR/compile/scripts, например, /home/judges/compile/scripts), и кроме того, для работы им требовались конфигурационные файлы gcc.cfg, которые находятся в EJUDGE_LANG_CONFIG_DIR, например /home/judges/compile/conf/lang.d.

При выполнении программ это не очень хорошо по следующим причинам:

  • требуется доступ к каталогу /home/judges/compile
  • скрипты запуска используют дополнительные конфигурационные файлы

Чтобы решить эти проблемы для запуска программ на языках, требующих виртуальные машины, используются скрипты rundotnet2, runjava2, runmono2, runvg2, которые размещаются в каталоге EJUDGE_SCRIPT_DIR/lang, например, /opt/ejudge/libexec/ejudge/lang. Конфигурационные настройки соответствующих языков программирования находятся в самих скриптах, то есть для работы им не требуются никакие дополнительные конфигурационные файлы.

Но пользователь, под которым система ejudge компилируется и инсталлируется, может отличаться от пользователя, под которым система работает, и под которым конфигурируются языки программирования. Файлы в каталоге /opt/ejudge могут иметь владельца, например, root, а языки программирования конфигурируются под пользователем ejudge. Пользователь ejudge может не иметь доступа на запись в каталог EJUDGE_SCRIPT_DIR/lang.

Программа ej-suid-update-scripts копирует скрипты запуска виртуальных машин в каталог EJUDGE_SCRIPT_DIR/lang и устанавливает им правильные права доступа. Программа запускается автоматически программой ejudge-configure-compilers при сохранении скриптов.

Использование:

ej-suid-update-scripts all