给PHP提供git pull请求的权限

我想让PHP执行一个Git pull命令。 但是用户和权限有一些问题。 你是怎么解决这个问题的?

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

最好的问候,贝恩德

你多久需要做一次拉动? 您可以为您的git用户创build一个cronjob(每30分钟左右),用于检查某个文件。 如果该文件有一个1或在其中,它会拉。 你可以让你的git用户和你的www数据用户访问这个文件。 PHP将1写入文件 – > cronjob(git用户的crontab条目)检查1是否在文件中 – > cronjob清除1 – > git makes pull – >等等这是一个安全的方式,有一点延迟(cronjob的周期)。 PS:不要忘了清除1。

如果是我,我会做同样的事情,但我会让cron作业以root身份运行,或者在拥有shell权限的系统上运行。 我认为www-data无法做任何事情的主要原因是因为它缺lessshell访问。 就像DrDol说的那样,每隔一段时间运行一个cron作业,如果你得到错误,你可以自由地用新的覆盖你的最后一个pull,因为你在一个pull的时候发出一个页面请求,最好是每个拉到一个文件夹,该文件夹然后被重命名为文件夹www-data正在使用,该文件夹被重命名为其他东西,然后删除后,新的工作目录已被重命名。

我build议你给www-data用户它是自己的副本的git回购,并且它是自己的SSH密钥。 然后,您可以使用Gitolite(或类似的)来确保它只能读取回购。 提供www数据访问您的主要回购并不是一个好主意。