我正在开发游戏面板,并使用 PHP 和 BASH 构建它。因此,Web 面板通过在按下按钮时运行 bash 脚本来控制游戏服务器。到目前为止,一切都很好。当我需要运行 bash 脚本时,我的问题就来了,因为运行它们的用户需要 sudo 权限,否则脚本会出现意外行为:
我应该创建一个新用户并赋予它 sudo 权限,然后通过 SSH(通过 PHP)登录服务器吗?如果是这样,我如何才能安全地存储登录凭据,以便在黑客入侵我的网站时找不到它们?
我应该将 www-data sudo 权限授予特定脚本吗?这是一种危险的方法吗?
有没有更好更安全的方法从网页运行 bash 脚本?
我是一名新手 PHP 开发人员,我的第一个项目是在 Ubuntu 服务器上运行的游戏面板。请怜悯。 :)
最佳答案
我不会直接从 PHP 运行任何 bash 脚本,而是通过使用消息队列将两者分离。
让 PHP 脚本向交换器发送消息并将操作标记为“进行中”。然后让 bash 脚本作为接收消息的队列的消费者运行,处理它并运行必要的脚本。最后将消息传递到另一个由 PHP 使用的队列,并根据结果将操作状态更新为“已完成”或“失败”。这不是同步过程,但它是更安全的处理方式。
推荐阅读:
关于PHP - 关注通过网站运行 bash 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48358462/