授予 PHP 发出 git pull 请求的权限

授予 PHP 发出 git pull 请求的权限

我想允许 PHP 执行 Git pull 命令。但是用户和权限存在一些问题。您是如何解决这个问题的?

PHP 以用户 www-data 的身份运行。因此,我将 .git 目录所有者/组更改为 www-data ( chown www-data:www-data -R .git)。后来发现 www-data 没有 SSH 密钥。给它一个密钥是个好主意吗?如果是,应该放在哪里?或者是否可以允许它使用特定密钥。

谨致问候,Bernd

答案1

您多久需要执行一次 pull?您可以为您的 git 用户创建一个 cronjob(大约每 30 分钟一次)来检查某个文件。如果该文件中有 1 或,则执行一次 pull。您可以授予 git 用户和 www-data 用户访问此文件的权限。PHP 将 1 写入文件 -> cronjob(git 用户的 crontab 条目)检查文件中是否有 1 -> cronjob 清除 1 -> git 执行 pull -> 等等这是一种安全的方法,但有一点延迟(cronjob 周期)。PS:不要忘记清除 1。

答案2

如果是我,我会做同样的事情,但我会让 cron 作业以 root 身份运行,或者在具有 shell 访问权限的系统上以其他方式运行。我认为 www-data 无法执行任何操作的主要原因是它缺乏 shell 访问权限。就像 DrDol 所说的那样,不时运行一个 cron 作业,这将使 git pull 可以随意用新的 pull 覆盖上次的 pull,如果您收到错误,那是因为您在 pull 过程中发出了页面请求,那么最好让每次 pull 都进入一个文件夹,然后将该文件夹重命名为 www-data 正在使用的文件夹,之后将该文件夹重命名为其他名称,然后在重命名新的工作目录后将其删除。

答案3

我建议您为 www-data 用户提供其自己的 git repo 副本和其自己的 SSH 密钥。然后,您可以使用 Gitolite(或类似软件)来确保它仅具有对 repo 的读取权限。授予 www-data 对您的主 repo 的访问权限并不是一个好主意。

相关内容