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