使用PHP Web界面与Linux后端进行多用户交互

时间:2014-11-26 22:54:36

标签: php linux bash webserver libssh2

我正在开发一个Web界面,允许用户在Linux机器上运行程序,并吸引更聪明的人在这里寻求帮助。

摘要

我的目的是创建一个Web环境(登录后),webusers输入或修改存储在通过PHP脚本提供的MySQL数据库中的基本信息。 webuser提交输入数据后,会将其写入MySQL数据库,然后生成bash脚本,然后执行数据以在Linux机器上按顺序运行多个程序。

目标是防止没有经验的用户必须SSH到Linux机器并手动编辑文本文件以运行某些软件。 MySQL数据库用于存储他们创建的每个 case 的webuser信息和数据。

麻烦

我需要一些关于如何从安全性和功能性角度出发的帮助:

问题

shell_exec()执行bash脚本作为apache用户,该用户没有适当的环境来执行程序。此问题的描述为here,没有(明确)解决方案。

关注

  1. 我无法通过SSH连接到用户apache来处理这些案例的后端管理。这是执行脚本的地方,因为另一个用户将是有益的。

  2. 共享的后端帐户由每个webuser执行,这意味着任何写入的数据都可能暴露给每个webuser,这是不好的;但我不确定这里的安全影响程度。

  3. 分析

    • 我觉得使用ssh2_exec()创建会话以在后端执行bash脚本可以缓解上面#1的问题。但是,我不希望webuser必须维持持久连接,因为某些脚本可能需要数小时才能运行。如果他们已连接,则需要对进度进行反馈,但他们可以随时离开。

    • 我想通过webuser或MySQL数据库中的var将个案分成子目录,我可以避免后端数据访问的任何问题。假设我将数据保存在类似/CASES/webuser#/case#或类似的目录结构中,然后将webuser访问权限仅限于他们自己的子目录。这看起来可行吗?

    问题

    • {I} ssh2_exec()shell_exec()更适合我试图完成的事情吗?

    • 是否有更好的方法可以从不同的webusers中分离和保护后端数据?

    • 我可以在用户登录时初始化ssh2_connect()会话,以便我可以提供更新,然后在他们离开网站时终止它吗?离开时是否必须手动注销以断开连接?

    感谢您一看,并提供任何帮助。

0 个答案:

没有答案