목표
ssh 기반의 git 서버 운영 및 다중 사용자가 공유하는 git 서버 운영 방법 (git repository 생성)
필요 작업
- git 전용 unix (user) group 생성
- git 사용자가 등록해야하는 group
- git 전용 group 기반 git repository 생성
- git 전용 group 에 등록된 user는 모두 git repository 접속 가능
- git 전용 group 에 등록되지 않은 user 는 접속 불가
기본 git repository 생성 방식
- 웹에서 흔히 찾을 수 있는 기본적인 git repository 생성 방식
- git repository 소유자 (git repository 생성자) 만 pull / push 가능
- 다중 사용자 공유 목적으로는 적합하지 않음
$ git init --bare SAMPLE_REPOSITORY.git
$ ls -ld SAMPLE_REPOSITORY.git
drwxr-xr-x 7 YOUR_USER_ID YOUR_GROUP_ID 200 6월 24 15:56 SAMPLE_REPOSITORY.git
접근 권한 설명
- rwx r-x r-x 권한
- SAMPLE_REPOSITORY 소유자만 쓰기 가능
- SAMPLE_REPOSITORY 소유그룹/other 는 읽기만 가능
다중 사용자가 공유하는 git repository 생성 준비
- UNIX 파일 시스템의 setgid 설정을 사용하여 (rwx rwx ---) 파일 소유 그룹에 속한 모든 사용자에게 권한 부여
- 참고 :
- git repository 생성 시, 위의 setgid 가 활성화되도록 git repository 생성
- 위의 setgid 설정을 사용하기 위하여 별도의 git 전용 group 생성
git 전용 group 생성
$ sudo groupadd git
$ cat /etc/group
……
git:x:2000:
……
git 전용 user 생성
- 해당 유저는 실제로 로그인하여 사용하는 유저가 아님
- 단순히, git repository 의 소유자를 표기하기 위한 용도
$ sudo useradd --gid git --shell /sbin/nologin --no-create-home git
신규 유저에 git 전용 group 추가
- 공유 git respository 에 접근할 모든 사용자에게 group 설정 필요
- 신규 유저에게 git 접근 권한을 추가하는 경우에만 작업하면 됨.
$ sudo usermod -aG git NEW_USER_ID
$ cat /etc/group
...
git:x:2000:OLD_USER_ID,NEW_USER_ID
...
그룹 공유 git repository 생성
- 위의 git 유저 / git 그룹으로 git repository 생성
- git repository 생성 시 --shared 옵션 사용
- 신규 git repository 를 생성할 때 마다 매번 작업 필요
그룹 공유 git repository 경로
- /home/git 디렉토리 사용
- linux OS가 설치된 파티션이 아닌 다른 파티션 사용 (재설치 시, 파일 유지 목적)
- /home/git -> /git 로 symlink 연결해서 사용
- git push & pull 시, 경로를 쉽게 표기하기 위한 목적 (직관적 주소 사용)
- 기본 주소 : ssh://IP_ADDR/home/git/SOME-GIT.git
- 쉬운 주소 : ssh://IP_ADDR/git/SOME-GIT.git
- 실제 사용 시, 2개 주소 모두 사용 가능
- 디렉토리 권한 설정
- rwx r-x --- 값 사용
- git user 만 repository 생성 가능하도록 설정
- git group 에 속하지 않은 유저는 접속 차단
$ ls -ld /home/git
drwxr-x---. 14 git git 220 22-05-30 16:04:43 /home/git/
repository 생성
$ sudo -u git -g git git init --bare --shared /git/GROUP_SHARED_REPOSITORY.git
$ ls -ld /git/GROUP_SHARED_REPOSITORY.git
drwxrwsr-x 7 git git 200 22-06-24 16:52:53 GROUP_SHARED_REPOSITORY.git
other 접근 권한 제거
$ sudo chmod o-rwx /git/GROUP_SHARED_REPOSITORY.git
$ ls -ld /git/GROUP_SHARED_REPOSITORY.git
drwxrws--- 7 git git 200 22-06-24 16:52:53 GROUP_SHARED_REPOSITORY.git
git repository clone 방법
git 서버가 아니라 git repository pull 을 진행할 컴퓨터에서 작업 (개발자 컴퓨터)
$ git clone ssh:/IP_ADDR/git/GROUP_SHARED_REPOSITORY.git
'Linux & Development' 카테고리의 다른 글
mpt3sas Module 업데이트 (0) | 2024.03.13 |
---|---|
리눅스 네트워크 브릿지(Linux Network Bridge) (0) | 2023.07.07 |
KVM에서 Ubuntu 설치 (0) | 2023.06.21 |
WINDOWS에서 VPN 연결하기 (0) | 2020.09.02 |
Install Ansible on CentOS (0) | 2020.08.23 |