2017-07-23 72 views
1

所以我通常是這樣創造的git鉤(root專用):新用戶權限被拒絕訪問git倉庫

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存儲庫 d我的嘗試是:

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://[email protected](my.vps.ip.0):(port)/home/git-repo/www.example.com.git' 

如何解決我的問題? 我只需要創建掛鉤和新用戶只能訪問一些我的git倉庫的混帳回購協議

回答

0

如果你想給NewUser訪問屬於Developer組首先你要更改權限的庫某些庫( IES):

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 '{}' \+ 

也就是說,設置組,允許組寫訪問,使所有現有目錄來傳播集團新創建的文件和目錄。

,然後配置混帳保留這些權限,那就是創造許可-rw-rw-r--所有文件:

git config core.sharedRepository group 
+0

我應該有權/home/nginx/domains/www.example.com/public嗎?我認爲它的權限被拒絕 – VanillaRong

+0

我的解釋只是關於'www.example.com.git'回購。您可以爲任何要訪問NewUser的回購重複該命令。 – phd

+0

nope,我的意思是我應該得到相同的權限文件夾,我的目標是我需要存儲文件? – VanillaRong