Многопользовательское взаимодействие с бэкэндом Linux с использованием веб-интерфейса PHP

Я работаю над веб-интерфейсом, который позволяет пользователям запускать программы на компьютере с Linux и обращаюсь к разумным специалистам за помощью.

Мое намерение состоит в том, чтобы создать веб-среду (за входом в систему), где веб-пользователи вводят или изменяют основную информацию, хранящуюся в базе данных MySQL, обслуживаемой с помощью сценариев PHP. Когда веб-пользователь отправляет входные данные, они записываются в базу данных MySQL, и сценарий bash генерируется с данными, которые затем выполняются для последовательного запуска нескольких программ на компьютере Linux.

Цель состоит в том, чтобы не дать неопытным пользователям использовать SSH на компьютере с Linux и вручную редактировать текстовые файлы для запуска определенного программного обеспечения. База данных MySQL предназначена для хранения информации и данных веб-пользователя для каждого дело они создают.

Мне нужна помощь в том, как действовать с точки зрения безопасности и функциональности:

Эта проблема

shell_exec() выполняет скрипт bash как apache пользователь, у которого нет подходящей среды для выполнения программ. Эта проблема описана Вот без (четкого) разрешения.

Концерны

  1. Я не могу SSH в пользователя apache обрабатывать административное управление этими случаи. Это где выполнение сценариев от имени другого пользователя было бы полезно.

  2. Общая внутренняя учетная запись выполняется каждым веб-пользователем, что означает, что любые записанные данные могут быть потенциально доступны каждому веб-пользователю, что не очень хорошо; но я не уверен в степени последствий для безопасности здесь.

  • Я чувствую, что создание сеансов с использованием ssh2_exec() Выполнение сценариев bash на серверной стороне облегчит проблему с # 1 выше. Однако я не хочу, чтобы веб-пользователю приходилось поддерживать постоянное соединение, поскольку запуск некоторых сценариев может занять несколько часов. Если они подключены, обратная связь о прогрессе требуется, но они должны быть свободны в любое время.

  • Я полагаю, что могу избежать каких-либо проблем с доступом к данным на сервере, просто разделив случаи в подкаталоги webuser или var в базе данных MySQL. Скажем, я сохраняю данные в dir-структуре вроде /CASES/webuser#/case# или аналогичный, тогда ограничение доступа веб-пользователя только к их собственному subdir. Это кажется возможным?

  • Либо ssh2_exec() или же shell_exec() лучше для чего я пытаюсь добиться?

  • Есть ли лучший способ отделить и защитить данные на сервере от разных веб-пользователей?

  • Могу ли я, возможно, инициализировать ssh2_connect() сеанс, когда пользователь входит в систему, чтобы я мог кормить его обновлениями, а затем прекращать его, когда он уходит с сайта? Придется ли им выходить из системы вручную при выходе, чтобы разорвать соединение?

Спасибо, что посмотрели, и за любую помощь.

2

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]