Unix

Git 공유 repository 만들기 - git shared repository

알 수 없는 사용자 2013. 5. 29. 14:30

아래 스크립트는 devs 라는 그룹이 공통적으로 read/write하는 repository를 만드는 스크립트다. chgrp은 git이 새로 만드는 파일의 경우 다른 개발자들이 건들지 못하게 되기 때문에 문제가 있는데, 그래서 setfacl을 써야 한다.

#!/bin/bash


GROUP=devs


if [ $# -eq 0 ] ; then

    echo Usage: ./mkshared.sh REPOS

    echo Note: Don\'t add .git suffix for REPOS name!

    echo You don\'t need root privilege to run this script, you need to log in as repos.

    exit 1;

fi


REPOS=$1.git


git init --bare $REPOS

chown -R repos:repos $REPOS

# group rwX

setfacl -R -m g:$GROUP:rwX $REPOS

# default group rwX

find $gitrepo -type d | xargs setfacl -R -m d:g:$GROUP:rwX


대충 이렇다. chown으로 group 권한을 쓰는 것만으로는 한계가 있어서, setfacl로 좀 더 견고하게 권한을 정해준다. setfacl이 디폴트로 지원되는 명령어는 아닌데 "acl"패키지를 깔면 생긴다... setfacl 프로그램은 디폴트가 아니지만 커널은 디폴트로 인식한다 (...)

g:그룹 대신 u:유저명 을 사용하면 특정유저에게 허용할 수 있다.

첫번째 setfacl명령어는 현재 있는 것들에 대해서 권한을 바꾸는 것이고, 아래 것은, d:g: ...에서 d가 포인트인데, default로는 어떤 권한을 줘야할지 정해주는 것이다.