带有git http后端的nginx:对www数据用户的“git push”访问权限不足

带有git http后端的nginx:对www数据用户的“git push”访问权限不足,git,nginx,permissions,git-http-backend,Git,Nginx,Permissions,Git Http Backend,我正在尝试使用fcgiwrap设置nginx,以便在https:///git/.git到git http后端 服务器是新安装的DebianLinux,因此在后台应该不会有什么尴尬的事情 错误场景 fcgiwrap套接字以www-data用户的身份运行,应该可以访问git存储库(见下文)。但是,当尝试推送git消息时,我会得到下面的消息(我想是关于访问权限的问题): 安装程序 nginx配置: server {

我正在尝试使用fcgiwrap设置nginx,以便在
https:///git/.git
到git http后端

服务器是新安装的DebianLinux,因此在后台应该不会有什么尴尬的事情

错误场景 fcgiwrap套接字以
www-data
用户的身份运行,应该可以访问git存储库(见下文)。但是,当尝试推送git消息时,我会得到下面的消息(我想是关于访问权限的问题):

安装程序 nginx配置:

server {                                                                                                                                                                          
        server_name  xxxxxxx.com;                                                                                                                                        

        location ~ /git(/.*) {                                                                                                                                                    
                auth_basic      "Private Git Repository";                                                                                                                         
                auth_basic_user_file /etc/nginx/.htpasswd;                                                                                                                        

                # fcgiwrap is set up to listen on this host:port                                                                                                                  
                fastcgi_pass unix:/var/run/fcgiwrap.socket;                                                                                                                       
                include       fastcgi_params;
                fastcgi_param SCRIPT_FILENAME     /usr/lib/git-core/git-http-backend;
                # export all repositories under GIT_PROJECT_ROOT
                fastcgi_param GIT_HTTP_EXPORT_ALL "";
                fastcgi_param GIT_PROJECT_ROOT    /opt/git;
                fastcgi_param PATH_INFO           $1;
                fastcgi_param REMOTE_USER $remote_user;
        }
}
FastCGIWrap:

$ apt-get install fcgiwrap
$ cat /etc/init.d/fcgiwrap
...
FCGI_USER="www-data"
FCGI_GROUP="www-data"
# Socket owner/group (will default to FCGI_USER/FCGI_GROUP if not defined)
FCGI_SOCKET_OWNER="www-data"
FCGI_SOCKET_GROUP="www-data"
...
/opt/git中的权限:

$ chown -R git:git /opt/git/
$ chmod -R 775 /opt/git/
$ chmod -R a+s /opt/git/
$ ls -la /opt/git                                                                                                                         0 !193 0jobs
drwsrwsr-x 6 git  git  4096 Aug 11 15:21 .
drwxr-xr-x 3 root root 4096 Jul 15 12:01 ..
drwsrwsr-x 7 git  git  4096 Aug 12 11:47 test.git
git回购配置:

$ cat /opt/git/test.git/config
[core]
        repositoryformatversion = 0
        filemode = true
        bare = true
        sharedrepository = 1
        sharedRepository = 1
[receive]
        denyNonFastforwards = true
[http]
    receivepack = true
nginx用户是
www-data
,是
git
组的成员:

$ groups www-data
www-data : www-data git
$ cat /etc/group | grep www-data
www-data:x:33:
git:x:1001:www-data
权变措施
  • 奇怪的是,如果我
    chgrp-R www-data/opt/git/
    ,它就能工作。不过,我希望它是
    git:git

  • chmoda+s/usr/lib/git-core/git-http-*
    。现在我也可以做
    chmod-r705/opt/git/
    ,它可以工作了。我想是因为现在root用户执行命令。我怀疑这是安全的。所以它不应该被使用

  • 使用ssh。使用ssh可以工作,甚至可以作为用户
    www-data
    登录并直接推送到repo工作区(因为组权限设置正确!)。但是,这不是选项,因为需要
    https
    访问

  • 我错过了什么? 我的点子快用完了。 按ssh推送是有效的。 如果我做了
    chown-R 770/opt/git/
    ,那么我甚至不能再通过https进行克隆或获取。因此,似乎
    www-data
    用户没有通过
    git-http-backend
    cgi脚本的访问权限。但是为什么???用户是
    git
    组的成员,应该具有组访问权限

    相关的

    • :侧重于权限,但未提及nginx用户无法通过git http后端访问的特定问题的答案
    重新启动!! 真不敢相信。。。 一个简单的服务器
    重启
    就解决了这个问题

    我之所以尝试这一点,是因为在向我的用户添加组权限时,我必须实际注销并重新登录。似乎许可的东西有时不适用于飞行?哇

    $ groups www-data
    www-data : www-data git
    $ cat /etc/group | grep www-data
    www-data:x:33:
    git:x:1001:www-data