Así que normalmente creo git hook como este (solo root):
git init --bare nano /home/git-repo/www.example.com.git/hooks//post-receive
Pega esto
#!/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
Entonces
chmod +x /home/git-repo/www.example.com.git/hooks//post-receive
Pero ahora traté de crear un nuevo usuario para acceder al repository git y establecer el permiso para que el nuevo usuario solo pueda acceder a un repository git y lo que probé es:
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
Pero cuando presiono, obtengo este error:
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'
¿Cómo resolver mi problema? Solo necesito crear git repo con ganchos y el nuevo usuario solo puede acceder a algunos de mis repositorys de git
Si quiere darle acceso a NewUser
a algunos repositorys que pertenecen primero al grupo de Developer
, debe cambiar los permissions para el (los) repository (es):
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 '{}' \+
Es decir, establecer grupo, permitir el acceso de escritura al grupo, hacer todos los directorys existentes para propagar el grupo para los files y directorys recién creados.
Y luego configure git para conservar estos permissions, es decir, para crear todos los files con permiso -rw-rw-r--
:
git config core.shanetworkingRepository group