다중 사용자 플랫폼에서 git 설정 및 파일 소유권 관리

다중 사용자 플랫폼에서 git 설정 및 파일 소유권 관리

우리는 여러 사람이 동일한 패키지에 대해 작업할 수 있는 플랫폼을 보유하고 있습니다. 따라서 우리는 한 사람의 sshkey와 한 사람의 전체 커밋 기록이 아닌 모든 사람의 개인 git 자격 증명을 유지하려고 합니다.

아이디어는 다음과 같은 사용자가 있을 수 있다는 것입니다.

  • platform_name마스터 사용자로서 모든 파일의 소유권을 갖고 있는 사용자입니다. 이는 사람들이 시스템을 변경하는 데 사용하는 사용자이기도 합니다.
  • firstname_lastname모든 사람에 대해 이 사용자는 git 자격 증명만 가지고 있습니다. 이런 식으로 사람들이 firstname lastname커밋하고 싶을 때 사용자로부터 커밋합니다.

그러나 git 작업으로 인해 파일 소유권이 변경되는 경우가 많기 때문에 이것이 어려워집니다. 해결 방법이 있나요? 아니면 이런 종류의 문제를 관리하기 위한 더 나은 시스템이 있나요?

답변1

따라서 우리는 한 사람의 sshkey와 한 사람의 전체 커밋 기록이 아닌 모든 사람의 개인 git 자격 증명을 유지하려고 합니다.

예, 이것이 표준 사용 사례입니다. git은 분산 버전 제어 시스템입니다. 모두가 자신의 로컬 복사본으로 작업합니다. 공동 작업은 개별 기여자가 소유하지 않은 업스트림 공유 저장소에 변경 사항을 "푸시"함으로써 발생합니다.

해결 방법이 있나요? 아니면 이런 종류의 문제를 관리하기 위한 더 나은 시스템이 있나요?

gitolite, github, gitlab, gitea/forgejo 등과 같이 작동합니다... 즉시 사용 가능합니다!

언제나 그렇듯이 각 사용자는 자신의 컴퓨터에 자신만의 사용자 계정을 갖고 있으며 변경된 사항은 없습니다.

중앙 git 저장소의 경우 다음을 수행합니다. Unix 사용자(일반적으로 이름이 git)가 있습니다. 해당 사용자의 모든 연결을 개별 기여자를 알고 인증에 사용하는 SSH 키로 구별하는 데몬으로 전달하도록 SSH 서버를 설정합니다.

상대적으로 설정이 쉬움: 어떤 UNIX 시스템을 사용하고 있는지는 모르겠지만, 제가 해야 할 일은 (Fedora F38, RedHat/Alma/Rocky/CentOS/OpenSUSE에도 동일 적용...)뿐이었습니다.설치하다podman, 컨테이너를 실행할 수 있는지 확인한 다음( usermod --add-subuids 100000-165535 --add-subgids 100000-165535 YOURUSERNAMEHERE이 작업을 수행) 다음을 실행합니다.

podman volume create forgejo-config
podman volume create forgejo-data
podman run \
   -it \
   -p 3000:3000 -p 2222:2222 \
   -v forgejo-config:/etc/gitea \
   -v forgejo-data:/var/lib/gitea \
   --name forgejo \
   codeberg.org/forgejo/forgejo:1.18.3-1-rootless

그런 다음 브라우저를 http://localhost:3000으로 리디렉션하고 기본값을 수락하고 관리자가 될 새 사용자를 등록하세요. 각 git 사용자는 동일한 인터페이스에 새로운 사용자를 등록합니다. 그것은 간단합니다!

웹 UI의 설정으로 이동하여 공개 SSH 키를 업로드합니다.

거기에서 그들은 자신의 네임스페이스에 새 저장소를 만들거나 개별 저장소 관리자를 통해 액세스 권한이 부여된 저장소에 액세스할 수 있습니다.

git clone ssh://git@localhost:2222/projectowner/project

(물론 localhost동일한 머신에 있지 않다면 머신 이름으로 바꾸고, projectowner소유한 사용자나 프로젝트 이름, project저장소 이름으로 바꾸세요.)

답변2

Linux에서 git을 설정하고 컴퓨터에 대한 액세스 권한을 부여하여 리포지토리를 푸시하거나 가져오고 권한을 부여하려면 git용 SSH 키를 생성해야 합니다.

다음 단계를 따르세요.

명령을 작성합니다(샘플 이메일에 이메일을 제공하세요).

ssh-keygen -t ed25519 -C[이메일 보호됨]

두 번째 명령을 작성하세요

"$(ssh-agent-s)" 평가

세 번째 명령(파일이 없으면 생성)

~/.ssh/config

~/.ssh/config를 터치하세요.

네 번째 명령은 이 명령을 사용하여 vim 편집기에서 구성 파일을 엽니다.

vim ~/.ssh/config

파일에 다음 명령을 입력합니다.

주인 *

AddKeysToAgent yes  

IdentityFile ~/.ssh/id_ed25519

<이제 명령을 사용하여 파일을 저장하십시오.

이 명령을 실행하세요

ssh -추가 ~/.ssh/id_ed25519

고양이~/.ssh/id_ed25519.pub

.SSH-T[이메일 보호됨]

또는

SSH-T[이메일 보호됨]

축하드립니다. 완료하셨습니다.

관련 정보