* Shell 에서 사용자 추가 !!
1. “sudo dscl . -create /Users/username UserShell /bin/bash”
2. “sudo dscl . -create /Users/username RealName “John Doth””
3. “sudo dscl . -create /Users/username UniquelID 1001″
4. “sudo dscl . -create /Users/username PrimaryGroupID 1000″
5. “sudo dscl . -create /Users/username NFSHomeDirectory /Local/Users/username”
6. “sudo dscl . -create /Users/username password” <<= 암호 입력
* GIT설치
1. 사용자 “git-admin” 추가 ( git 사용자 권한 관리 사용자 )
2. 사용자 “git-repo” 추가 ( git 저장소 관리 사용자 )
3. gitolite 설치
> sudo su - git-repo ( git-repo 사용자로 변경 ) > git clone http://github.com/sitaramc/gitolite.git (최신코드 받아 오기) Cloning into 'gitolite'... remote: Counting objects: 8157, done. remote: Compressing objects: 100% (3339/3339), done. remote: Total 8157 (delta 4970), reused 7769 (delta 4649) Receiving objects: 100% (8157/8157), 2.90 MiB | 325 KiB/s, done. Resolving deltas: 100% (4970/4970), done.
> ./gitolite/install ( install 스크립트 실행 ) use the following full path for gitolite: /home/git-repo/gitolite/src/gitolite
> ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/home/git-admin/.ssh/id_rsa):
공개키를 git-repo로 전송 > scp .ssh/id_rsa.pub git-repo@localhost:/home/git-repo/git-admin.pub
git-repo계정에서 git-admin 공개키를 등록한다. > ./gitolite/src/gitolite setup -pk git-admin.pub Initialized empty Git repository in /home/git-repo/repositories/gitolite-admin.git/ Initialized empty Git repository in /home/git-repo/repositories/testing.git/
git-admin으로 gitolite-admin 저장소를 clone해 온다.
git-admin@git-server:~$ git clone git-repo@localhost:gitolite-admin.git Cloning into 'gitolite-admin'... remote: Counting objects: 6, done. remote: Compressing objects: 100% (4/4), done. Receiving objects: 100% (6/6), 740 bytes, done. remote: Total 6 (delta 0), reused 0 (delta 0)
이걸로 환경설정을 끝냈다. 이후 git 저장소와 계정/권한에 관한 작업은 git-admin 계정으로 진행하면 된다.
gitolite-admin 디렉토리에는 “keydir”과 “conf” 디렉토리가 있다.
- keydir : 유저의 ssh 퍼블릭 키를 관리한다.
- conf : 저장소와 저장소에 대한 권한 관리를 위한 설정 파일이 있다.
git 유저로 등록해 보자. 등록 과정은 다음과 같다.
- 프로젝트에 새로운 개발자가 참여하게 됐다. 이 개발자를 git server에 등록해야 한다.
- 관리자[1]는 개발자에게 계정이름과 ssh 퍼블릭키를 달라고 요청한다.
- 개발자는 ssh-keygen을 이용 퍼블릭 키를 만든다. 계정 이름은 yundream으로 하기로 했다.
- 관리자는 (메일 등으로) yundream.pub 파일을 받았다.
관리자는 git-admin 계정에서 yundream.pub 파일을 등록하면 된다.
git-admin@git-server # mv yundream.pub gitolite-admin/keydir/ git-admin@git-server # ls gitolite-admin/keydir/ git-admin.pub yundream.pub
yundream.pub 파일을 push 한다.
git-admin@git-server # git add yundream.pub git-admin@git-server # git commit -a -m "yundream account add" git-admin@git-server # git push
추가한 계정으로 testing.git을 clone해보자. commit, push 까지 성공했다면 OK.
# git clone git-repo@git-server:testing.git
저장소 권한 설정
gitolite-admin 계정으로 저장소와 저장소에 대한 권한을 설정할 수 있다. 설정파일 gitolite.conf를 열어보자.
git-admin@git-server # cat ~/conf/gitolite.conf repo gitolite-admin RW+ = git-admin repo testing RW+ = @all
- repo : 저장소 이름
- RW나 RW+ 는 권한이다.
- 권한 뒤에는 권한을 가지는 유저나 그룹을 명시한다. 앞에 @이가 붙으면 그룹이다. @all 모든 유저를 의미한다.
그룹은 아래와 같이 설정할 수 있다.
@oss_repos = linux perl rakudo git gitolite @secret_repos = fenestra pear @admins = scott # Adams, not Chacon, sorry :) @interns = ashok # get the spelling right, Scott! @engineers = sitaram dilbert wally alice @staff = @admins @engineers @interns
권한은 R, RW, RW+, -가 있다.
- R : 읽기만 할 수 있다.
- RW : 저장소에 쓸 수 있다. 새로운 저장소를 만들 수도 있다.
- RW+ : 저장소를 삭제할 수도 있다.
- – : 접근 거부
브랜치 단위로 권한을 줄 수 있지만 파일 단위로도 권한을 제어할 수 있다. 예를 들어 Makefile 같은 경우에는 아무나 건드리면 안될 거다. 다음과 같이 특정 그룹만 접근하도록 할 수 있다.
repo foo RW = @junior_devs @senior_devs RW NAME/ = @senior_devs - NAME/Makefile = @junior_devs RW NAME/ = @junior_devs
이제 myproj 이라는 새로운 그룹을 만들어 보자.
repo myproj RW+ = yundream
위 내용을 추가하고 push하면 저장소가 만들어지고 권한까지 설정 된다.
git-admin@git-server # git commit -a -m "myproj repository create" [master 91e2144] myproj repository create 1 file changed, 3 insertions(+) git-admin@git-server # git push
레파지토리 추가
git init –bare 레파지토리이름.git
연속할때는..
git clone ssh://사용자아이디@서버주소/Users/git-repo/레파지토리이름.git
참고 :: http://git-scm.com/book/ko/v1/Git-서버-Gitolite
http://www.tomdalling.com/blog/software-processes/how-to-set-up-a-secure-git-server-at-home-osx/