Ej-suid-update-scripts

From EjudgeWiki
Revision as of 06:51, 23 December 2021 by Cher (talk | contribs) (...)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Навигация: Главная страница/Система 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