我正在开发一个Web界面,允许用户在Linux机器上运行程序,并吸引更聪明的人在这里寻求帮助。
我的目的是创建一个Web环境(登录后),webusers输入或修改存储在通过PHP脚本提供的MySQL数据库中的基本信息。 webuser提交输入数据后,会将其写入MySQL数据库,然后生成bash脚本,然后执行数据以在Linux机器上按顺序运行多个程序。
目标是防止没有经验的用户必须SSH到Linux机器并手动编辑文本文件以运行某些软件。 MySQL数据库用于存储他们创建的每个 case 的webuser信息和数据。
我需要一些关于如何从安全性和功能性角度出发的帮助:
问题
shell_exec()
执行bash脚本作为apache
用户,该用户没有适当的环境来执行程序。此问题的描述为here,没有(明确)解决方案。
关注
我无法通过SSH连接到用户apache
来处理这些案例的后端管理。这是执行脚本的地方,因为另一个用户将是有益的。
共享的后端帐户由每个webuser执行,这意味着任何写入的数据都可能暴露给每个webuser,这是不好的;但我不确定这里的安全影响程度。
我觉得使用ssh2_exec()
创建会话以在后端执行bash脚本可以缓解上面#1的问题。但是,我不希望webuser必须维持持久连接,因为某些脚本可能需要数小时才能运行。如果他们已连接,则需要对进度进行反馈,但他们可以随时离开。
我想通过webuser或MySQL数据库中的var将个案分成子目录,我可以避免后端数据访问的任何问题。假设我将数据保存在类似/CASES/webuser#/case#
或类似的目录结构中,然后将webuser访问权限仅限于他们自己的子目录。这看起来可行吗?
{I} ssh2_exec()
或shell_exec()
更适合我试图完成的事情吗?
是否有更好的方法可以从不同的webusers中分离和保护后端数据?
我可以在用户登录时初始化ssh2_connect()
会话,以便我可以提供更新,然后在他们离开网站时终止它吗?离开时是否必须手动注销以断开连接?
感谢您一看,并提供任何帮助。