寻找一种运行 php git 接收后钩子的安全方法


Looking for a secure method of running a php git post-recieve hook

我有一个钩子,它执行 git pull 但在需要写入添加的文件时失败。它操作的用户是 apache,当授予写入权限(通过将 apache 添加到具有写入访问权限的组)时,它可以很好地执行 git pull 。

我想出了一些解决方案...

  • 将 Apache 保留在具有写入权限的组中(感觉不安全)
  • 将文件的所有权更改为 Apache (不安全且黑客攻击)
  • 使用 sudo(但这需要存储密码或没有密码密码)
  • 在 git 之前和之后执行 chmod 为 Apache 添加写入拉的执行(哈克)

但是,所有这些似乎都是不安全/黑客的解决方案。

请分享您用来解决这些问题的任何建议或方法。我很想知道任何解决方案,特别是如果你不得不自己跳过这个障碍。

另一种解决方案(可能是老派的)是创建一个setuid程序来执行实际工作,然后从钩子运行该setuid程序。

如果你使用 SELinux 运行,你可能需要调整权限以使 setuid 程序从钩子运行,因为钩子以 Apache 用户的身份运行。