我有一个钩子,它执行 git pull 但在需要写入添加的文件时失败。它操作的用户是 apache,当授予写入权限(通过将 apache 添加到具有写入访问权限的组)时,它可以很好地执行 git pull 。
我想出了一些解决方案...
- 将 Apache 保留在具有写入权限的组中(感觉不安全)
- 将文件的所有权更改为 Apache (不安全且黑客攻击)
- 使用 sudo(但这需要存储密码或没有密码密码)
- 在 git 之前和之后执行 chmod 为 Apache 添加写入拉的执行(哈克)
但是,所有这些似乎都是不安全/黑客的解决方案。
请分享您用来解决这些问题的任何建议或方法。我很想知道任何解决方案,特别是如果你不得不自己跳过这个障碍。
另一种解决方案(可能是老派的)是创建一个setuid程序来执行实际工作,然后从钩子运行该setuid程序。
如果你使用 SELinux 运行,你可能需要调整权限以使 setuid 程序从钩子运行,因为钩子以 Apache 用户的身份运行。