Я работаю над веб-интерфейсом, который позволяет пользователям запускать программы на компьютере с Linux и обращаюсь к разумным специалистам за помощью.
Мое намерение состоит в том, чтобы создать веб-среду (за входом в систему), где веб-пользователи вводят или изменяют основную информацию, хранящуюся в базе данных MySQL, обслуживаемой с помощью сценариев PHP. Когда веб-пользователь отправляет входные данные, они записываются в базу данных MySQL, и сценарий bash генерируется с данными, которые затем выполняются для последовательного запуска нескольких программ на компьютере Linux.
Цель состоит в том, чтобы не дать неопытным пользователям использовать SSH на компьютере с Linux и вручную редактировать текстовые файлы для запуска определенного программного обеспечения. База данных MySQL предназначена для хранения информации и данных веб-пользователя для каждого дело они создают.
Мне нужна помощь в том, как действовать с точки зрения безопасности и функциональности:
Эта проблема
shell_exec()
выполняет скрипт bash как apache
пользователь, у которого нет подходящей среды для выполнения программ. Эта проблема описана Вот без (четкого) разрешения.
Концерны
Я не могу SSH в пользователя apache
обрабатывать административное управление этими случаи. Это где выполнение сценариев от имени другого пользователя было бы полезно.
Общая внутренняя учетная запись выполняется каждым веб-пользователем, что означает, что любые записанные данные могут быть потенциально доступны каждому веб-пользователю, что не очень хорошо; но я не уверен в степени последствий для безопасности здесь.
Я чувствую, что создание сеансов с использованием ssh2_exec()
Выполнение сценариев bash на серверной стороне облегчит проблему с # 1 выше. Однако я не хочу, чтобы веб-пользователю приходилось поддерживать постоянное соединение, поскольку запуск некоторых сценариев может занять несколько часов. Если они подключены, обратная связь о прогрессе требуется, но они должны быть свободны в любое время.
Я полагаю, что могу избежать каких-либо проблем с доступом к данным на сервере, просто разделив случаи в подкаталоги webuser или var в базе данных MySQL. Скажем, я сохраняю данные в dir-структуре вроде /CASES/webuser#/case#
или аналогичный, тогда ограничение доступа веб-пользователя только к их собственному subdir. Это кажется возможным?
Либо ssh2_exec()
или же shell_exec()
лучше для чего я пытаюсь добиться?
Есть ли лучший способ отделить и защитить данные на сервере от разных веб-пользователей?
Могу ли я, возможно, инициализировать ssh2_connect()
сеанс, когда пользователь входит в систему, чтобы я мог кормить его обновлениями, а затем прекращать его, когда он уходит с сайта? Придется ли им выходить из системы вручную при выходе, чтобы разорвать соединение?
Спасибо, что посмотрели, и за любую помощь.
Задача ещё не решена.
Других решений пока нет …