【发布时间】:2012-03-20 10:52:30
【问题描述】:
我有一个使用 git、gitosis、nginx 和 php-fpm 设置的 CentOS 6 服务器。
通过我们的设置,nginx 通过 php-fpm 执行 php 脚本,该脚本基于每个站点配置为出于安全目的以特定用户身份运行(即并非全部在 nginx:nginx 下),因为我们不希望如果一个站点被入侵,所有站点都会被入侵。
我们的环境运行良好,但是,当涉及 git 时,php-fpm 会产生一个根本问题。
在本地成功运行以下命令后:
$ git push origin
我的 post-receive 钩子正在运行:
#!/bin/sh
GIT_WORK_TREE=/var/www/vhosts/example.com/httpdocs git checkout -f
通常,这会将 repo 的内容复制到 httpdocs 文件夹中,但是由于安装了 php-fpm 并且目录+文件归特定用户所有,gitosis(或任何其他非 root 用户)无法写入到目录。以下错误表明这一点:
remote: error: git checkout-index: unable to create file index.php (Permission denied)
这是有道理的,这就是我所期望的。但是,我想知道在这种特定情况下是否有办法解决这个问题?有没有办法可以修改 post-receive 挂钩以 root 身份运行(它目前由 gitosis 用户运行)或以其他方式运行以使其成功?
要明确一点:设置没有其他问题,git 工作正常,nginx/php-fpm 工作正常,但这是一个权限问题,我不太确定如何解决。
【问题讨论】:
标签: git permissions gitosis php