Как обрабатывать разрешения командной строки через веб-доступ - PullRequest
0 голосов
/ 22 сентября 2018

Вот что я пытаюсь сделать:

У меня есть vServer, на котором запущены разные игровые серверы, голосовые серверы, боты и т. Д. Поскольку в нашем сообществе есть некоторые администраторы, которые не знают, как обращаться с нимисерверы через командную строку Я хочу создать веб-интерфейс, который в основном выполняет некоторые команды с помощью нажатий кнопок и показывает, что сервер ответит.Почти все работает нормально, я использовал PHP для выполнения команд с функцией shell_exec (), но столкнулся с проблемой: у пользователя www-data нет необходимых прав для выполнения некоторых команд.Я гуглил некоторые решения, и теперь я знаю, что было бы неразумно запускать Apache от имени root, поэтому я ищу другое решение ...

Кто-нибудь, кто знает "красивый" способ решения этой проблемы?Я должен сказать, что я в значительной степени новичок в этих вещах, поэтому, пожалуйста, не ожидайте больших знаний: p

Заранее спасибо и всего наилучшего:)

1 Ответ

0 голосов
/ 22 сентября 2018

Одним из возможных решений может быть сохранение всех команд, которые вы хотите выполнить, в таблице базы данных, а затем создание сценария PHP, выполняющегося в crontab, от имени пользователя root.Этот скрипт PHP должен иметь разрешение на запуск system_exec.

Шаги: 1) Сохранить команды в таблице базы данных => "ls / etc / var / log /" 2) PHP-скрипт /var/www/html/read_commands.php (прочитать все команды из таблицы и выполнить с помощью system_exec) изатем удалите команду.Ex.

$command_from_table="ls /etc/var/log/";
system_exec($command_from_table);
//delete the command from the table.

3) Добавьте /var/www/html/read_commands.php в crontab -e.

* * * * * sudo /var/www/html/read_commands.php

Это может дать вам одну идею, но есть много подходов кэто, это может быть сделано с некоторым разрешением для Apache, но это нарушение безопасности.

Также необходимо убедиться, что пользователь не может вставлять такие важные команды, как rm -rf / lol

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...