我正在设置一个服务器以使用 Bitbucket 的回发工具从 Bitbucket git 存储库进行自动部署。
简而言之,它是如何工作的:
- 我承诺使用 Bitbucket
- Bitbucket POST 到指定脚本(仅在从 BB 的 IP 地址调用时运行)
- 我的脚本 chdirs 到适当的目录,运行 git reset 和 git pull 以更新到最新版本(这是一个使用 exec() 的 php 脚本)。
我的想法来自:
http://www.stephenradford.me/blog/tutorials/deploy-via-bitbucket-or-github-service-hooks
总体而言,它似乎还可以,但它对我来说有一个主要的安全问题 - 为了使其工作,您需要授予 apache 对站点目录的写访问权限/所有权来进行部署。这让我觉得这是个坏主意,因为攻击者使用 apache 在目录中写入任意文件。
作为替代方案,我的想法是:
- 创建另一个用户,“部署”,然后使该用户拥有站点目录。
- 使用 sudoers 使 apache 能够在用户部署时运行特定的 shell 脚本,并将我的 git reset、pull 命令等放在该 shell 脚本中。
- 在我的 exec() 调用中,执行例如“sudo -u deploy shell-script.sh”
任何人都可以看到任何缺陷/漏洞吗?