拒绝访问git存储库的新用户权限

时间:2017-07-23 21:06:22

标签: git permissions file-permissions

所以我通常会像这样创建git hook(仅限root):

git init --bare
nano /home/git-repo/www.example.com.git/hooks//post-receive

粘贴此

#!/bin/sh
GIT_WORK_TREE=/home/nginx/domains/www.example.com/public git checkout -f
GIT_WORK_TREE=/home/nginx/domains/www.example.com/public git checkout -f master
GIT_WORK_TREE=/home/nginx/domains/www.example.com/public git clean -f

然后

chmod +x /home/git-repo/www.example.com.git/hooks//post-receive

但是现在我尝试为访问git存储库创建新用户并设置权限,这样新用户只能访问一些git存储库 我尝试的是:

useradd NewUser
groupadd Developer
usermod -G Developer NewUser
chgrp Developer /home/git-repo/www.example.com.git/hooks//post-receive
chmod +x /home/git-repo/www.example.com.git/hooks//post-receive

但是当我推动时,我收到了这个错误:

Counting objects: 1549, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (826/826), done.
fatal: Unable to create temporary file: Permission denied
fatal: sha1 file '<stdout>' write error: Broken pipe
error: failed to push some refs to 'ssh://NewUser@(my.vps.ip.0):(port)/home/git-repo/www.example.com.git'

如何解决我的问题? 我只需要用钩子创建git repo,新用户只能访问我的一些git仓库

1 个答案:

答案 0 :(得分:0)

如果您想首先授予NewUser对属于Developer组的某些存储库的访问权限,您必须更改存储库的权限:

chgrp -R Developer /home/git-repo/www.example.com.git
chmod -R g+w /home/git-repo/www.example.com.git
find /home/git-repo/www.example.com.git -type d -exec chmod g+s '{}' \+

即,设置组,允许对组进行写访问,使所有现有目录为新创建的文件和目录传播组。

然后配置git以保留这些权限,即创建具有权限-rw-rw-r--的所有文件:

git config core.sharedRepository group