Назад | Перейти на главную страницу

Как назначить конкретное разрешение пользователю «none» php в Linux?

Я хочу сделать онлайн-судью для программ c. Я записал пользовательский ввод в текстовое поле и сделал из него файл .c. Теперь он хочет, чтобы php запускал команду linux `gcc code.c

Я сделал это как

$cmd=gcc -std=c99 code.c -g -Wall

$last=exec($cmd,$out,$status);

как предлагается в stackoverflow. Но эта команда не работает. Он вернулся со статусом 1. Но другие команды Linux, такие как date, pwd и т.д., работают нормально.

Я подозреваю, что проблема в том, что whoami команда говорит "никто". Теперь этот «никто» может не иметь разрешения на запуск gcc. Итак, скажите, пожалуйста, как заставить это работать или как назначить разрешение пользователю «none»?

Я знаю, что это очень небезопасно. Но пусть будет так. Пожалуйста, дайте решения, чтобы команда заработала.

  1. Нет
    Вы не используете nobody. nobody никогда не следует использовать ни для чего. nobody не личность.
    С помощью nobody делать что-то значит предоставлять nobody разрешения. Как только вы это сделаете, вы начнете спускаться по скользкому склону и в конечном итоге окажетесь на nobody будучи членом wheel группа и suполучить root права, потому что это проще, а затем вашу систему взломают инопланетные космические хакеры, и вся планета рухнет, и она ВСЕ ТВОЯ ВИНА.

  2. Нет
    Вы не просто берете чужой код и выполняете его.
    Ты даже не берешь ваш собственный код и выполнить его.
    Выполнение ненадежного пользовательского ввода Плохо и неправильно.
    Если вы хотите сделать это, вы запускаете полностью изолированные виртуальные машины для компиляции и выполнения программы в полностью изолированной песочнице без подключения к сети и доступа к внешней машине.

Если кто-то на Stack Overflow намекнул, что это каким-либо образом сформировало Отличная идея этот человек идиот. Вот почему мы не позволяем разработчикам управлять производственной средой.

Стоп, не пройди, не собирай интернет-герпес.

Пожалуйста, пожалуйста, займитесь исследованием Докер и узнайте, почему что-то подобное является лучшим решением этой проблемы.