Gitolite Git 서버 구축 권한 관리

참고 자료:
    http://www.ossxp.com/doc/git/gitolite.html
환경 debian squeeze 를 가설 하고 모든 설치 소프트웨어 는 debian 소스 에서 자체 적 으로 가 져 옵 니 다.
주요 참고 문헌:
1.장 흠 작품http://www.ossxp.com/doc/git/gitolite.html (한국어 입문서
2.Gitolite 자체 문서https://github.com/sitaramc/gitolite/tree/master/doc (자가 용 문 서 를 자세히 읽 으 면 세부 적 인 문 제 를 해결 하 는 데 도움 이 된다)
3、Gitolite WIKI http://sitaramc.github.com/gitolite/  
Gitolite 설치:
1.설치 소프트웨어
sudo apt-get install gitolite git-core
2.G 관리자 의 ssh key 생 성
어떤 계 정 을 확인 하면 server 의 계 정 일 수도 있 고 특정한 클 라 이언 트 의 계 정 일 수도 있 지만 유일한 것 일 수 밖 에 없습니다.
이 계 정 에서 ssh-keygen 으로 ssh key 를 생 성 합 니 다.
터미널 에서 ssh-keygen 을 실행 합 니 다.기본적으로~/.ssh 에서 파일 id 생 성rsa.pub。
이 파일 을 서버/tmp/아래 에 두 고 admin.pub 라 고 명명 합 니 다.
2、git 전용 계 정 만 들 기
sudo adduser --system --shell /bin/bash --group git
sudo adduser git ssh 
sudo passwd git
이후 업로드 다운로드 작업 은 모두 이 계 정 을 통 해 진행 되 지만 이 계 정 을 직접 사용 하지 않 고 ssh key 인증 을 통 해 이 뤄 진다.원 리 는 문헌 1 참조.
3,Gitolite 창고 구축
git 계 정
gl-setup/tmp/admin.pub 는 admin.pub 의 계 정 을 관리자 로 하여 Gitolite 창 고 를 만 듭 니 다.
이 때 git 계 정 아래 reposcories 디 렉 터 리 가 생 성 되 며,아래 에는 두 개의 키 디 렉 터 리 gitolite-admin.git 와 testing.git 가 있 습 니 다.
4.Gitolite 관리
G 관리자 계 정 에서 git clone 실행git@server_ip:gitolite_admin.git
이렇게 G 관리자 계 정 아래 에 gitolite 가 있 습 니 다.admin 폴 더 는 gitolite 창 고 를 관리 하 는 프로필 과 Key 파일 입 니 다.
사용자 증가:
누군가의 ssh key 파일 abc.pub 를 gitolite 로 복사 합 니 다.admin/Keydir 아래;
그리고 git add Keydir/abc.pub
git commit -m 'add abc'
git push origin master
이렇게 하면 abc 사용 자 를 추가 합 니 다.
Gitolite 는 git 사용 자 를 관리 하지만 Gitolite 자 체 는 git 를 통 해 작 동 합 니 다.재 밌 죠?
삭제 하 는 방법 을 믿 습 니 다.제 가 말 하지 않 아 도 되 죠?
사용자 권한 설정:
Gitolite 는 사용자 의 행동 을 관리 하 는 데 사 용 됩 니 다.conf/gitolite.conf 가 완료 되 었 습 니 다.
아래 의 모든 예 는 참고 문헌 1 에서 나온다.일부 지역 은 이미 적용 되 지 않 기 때문에 약간 수정 하 였 다.
다음은 간단 한 권한 수여 파일 을 보 겠 습 니 다.
1   @admin = jiangxin wangsheng 

2

3   repo gitolite-admin

4       RW+                 = jiangxin

5

6   repo ossxp/..*

7       C                   = @admin

8       RW                  = @all

9

10  repo testing

11      RW+                         =   @admin

12      RW      master              =   junio

13      RW+     pu                  =   junio

14      RW      cogito$             =   pasky

15      RW      bw/                 =   linus

16      -                           =   somebody

17      RW      tmp/                =   @all

18      RW      refs/tags/v[0-9]    =   junio

위의 예제 에서 우 리 는 많은 권한 수여 명령 을 보 여 주 었 다.
첫 번 째 줄 은 사용자 그룹@admin 을 정의 합 니 다.두 사용자 jiangxin 과 wangsheng 을 포함 합 니 다
3-4 줄 은 버 전 라 이브 러 리 gitolite-admin 을 정의 합 니 다.사용자 jiangxin 만 접근 할 수 있 고 읽 기(R)쓰기(W)와 강제 업데이트(+)권한 이 있 습 니 다
여섯 번 째 줄 은 정규 표현 식 을 통 해 ossxp/디 렉 터 리 에 있 는 모든 버 전 라 이브 러 리 를 정의 합 니 다
일곱 번 째 줄,사용자 그룹 @admin 사용자 ossxp/ 디 렉 터 리 에 버 전 라 이브 러 리 를 만 듭 니 다.버 전 라 이브 러 리 를 만 든 사용 자 는 버 전 라 이브 러 리 작업 에 대한 모든 권한 을 가지 고 있 습 니 다
여덟 번 째 줄,모든 사용자 가 읽 고 쓸 수 있 습 니 다. ossxp 디 렉 터 리 에 있 는 버 전 라 이브 러 리 이지 만 강제로 업데이트 할 수 없습니다.(메모:RW 와 C 를 두 줄 로 나 누 는 것 은 소프트웨어 창고 의 권한 을 말 합 니 다.RWC 는 한 줄 에 분기 의 권한 입 니 다.gitolite 문서 wildcard-repositories.mkd 참조)9 줄 시작,정의 testing 버 전 라 이브 러 리 인증 은 인증 문법 을 사용 합 니 다
제1 1 줄,사용자 그룹 @admin 모든 분기 와 이정표 에 대해 읽 기와 쓰기,리 셋,추가,삭제 권한 을 부여 합 니 다
열 두 번 째 줄,사용자 junio 읽 고 쓸 수 있다 master 갈래master 로 시작 하 는 다른 가지 도 포함 되 어 있 습 니 다.있 으 면)..
제1 3 줄,사용자 junio 읽 기,쓰기,강제 업데이트,생 성 및 삭제 가능 pu 첫머리 의 가지
사용자 pasky 읽 고 쓸 수 있다 cogito 갈래이 지점 만 정확하게 일치 합 니 다
5.버 전 라 이브 러 리 추가
a.빈 버 전 라 이브 러 리 만 들 기
conf/gitolite.conf 에 규칙 을 추가 하 십시오.예 를 들 어
repo work1
RW+=@all
이렇게 하면 gitolite 는 자동 으로 빈 버 전 라 이브 러 리 를 만 들 수 있 습 니 다.
b.기 존 버 전 라 이브 러 리 업로드
위의 예 에서 6~8 줄 에 설 정 된 규칙 은 admin(또는 다른 계 정 지정)에서 지정 한 디 렉 터 리 에 버 전 라 이브 러 리 를 업로드 할 수 있 습 니 다.
이 컴퓨터 의 버 전 라 이브 러 리 에서 실행:
git remote add r-server git@server_ip:ossxp/repo.git
git push r-server master
즉시 푸 시 완료.
6.고급 관리
4 리 에 서 는 대부분의 권한 관리 상황 이 언급 됐다.아직 부족 하면 마스크 인증 에 들 어가 야 합 니 다:
a.사용자 개인 버 전 라 이브 러 리
인증 파일 은 다음 과 같 습 니 다:
1  @administrators = jiangxin admin

2

3  repo users/CREATOR/.+$

4      C = @all

5      R = @administrators


설명:사용 자 는 자신의 이름 공간 에서( /users// )다음 버 전 라 이브 러 리 를 만 듭 니 다.
CREATOR 는 모든 사용자 의 마스크 입 니 다.창설 자 는 버 전 라 이브 러 리 에 대해 최고 권한 을 가지 고 있 으 며,다른 사람 은 읽 기 권한 만 있 습 니 다.(당연히 따로 설정 할 수 있 습 니 다.)
b.사용자 개인 분기
인증 파일:
repo test/repo4
    RW+   dev/USER/   = @all
    RW+   master  = @dev

설명:
모든 사용자 가 refs/heads/dev// (자신의 이름 공간)아래 에 가 지 를 만 들 고 삭제 합 니 다.하지만 다른 사람의 가 지 를 고 칠 수 는 없습니다
사용자 그룹 @dev 마스터 분기 에 대해 읽 기와 쓰기,강제 업데이트 권한 이 있 지만 삭제 할 수 없습니다
설정 파일 을 변경 한 후 git 방법 을 적용 하여 push 를 server 에 올 립 니 다.
7、Gitweb
상술 한 조작 결 과 는 모두 직관 적 으로 나타 나 지 않 아서 미래의 사용자 에 게 어느 정도 이해 장 애 를 초래 할 것 이다.
이 장 애 는 지 트 윗 을 통 해 극복 할 수 있다.Giteb 는 웹 페이지 전단 으로 git 창고 의 내용 을 웹 페이지 로 보 여 주 는 작업 을 합 니 다.git.kernel.org 에 빽빽 한 창고 와 지점)
이렇게 하면 개발 자 들 은 자신 이 필요 로 하 는 물건 을 찾 는 것 을 더욱 잘 알 게 될 것 이다.
1.설치 소프트웨어
sudo apt-get install gitweb
2.수정/etc/giteb.conf
$projectroot = "/data/git-repo" <-- 이곳 은 gitolite 창고 의 위치 일 것 입 니 다.나 는 이전에 git 계 정 에 있 는 reposcories 를 옮 긴 후에 링크 를 만들어 서 돌아 갔다(ln-s/data/git-repo/home/git/reposcories).
3.웹 설정
수정/etc/apache 2/sites-available/default
나 는 원래 의/var/www 내용 을 다음 과 같이 바 꾸 었 다.
DocumentRoot /var/www                                                                                                                                  Options ExecCGI Indexes +FollowSymLinks MultiViews                                  Order allow,deny                                                                    Allow from all                                                                      AllowOverride all                                                                   AddHandler cgi-script cgi                                                           DirectoryIndex gitweb.cgi                                                           SetEnv  GITWEB_CONFIG  /etc/gitweb.conf                                             
그리고/var/www 에서 실행 합 니 다.
sudo ln -s /usr/share/gitweb/* .
sudo ln -s gitweb.cgi index.html
이렇게 들 어 갑 니 다.http://server-ipgit.kernel.org 와 같은 동쪽 을 볼 수 있 습 니 다.
참,창고 의 권한 을 수정 하 는 것 을 잊 지 마 세 요(chmod a+x/data/git-repo-R)
4.www-data 를 git 그룹 에 추가 합 니 다.

좋은 웹페이지 즐겨찾기