특정 디렉터리의 기존 또는 향후 하위 디렉터리에 있는 특정 사용자에게 읽기/쓰기 권한을 부여하는 방법은 무엇입니까?

특정 디렉터리의 기존 또는 향후 하위 디렉터리에 있는 특정 사용자에게 읽기/쓰기 권한을 부여하는 방법은 무엇입니까?

VPS에서 나만의 git 저장소를 호스팅하고 있습니다. 내 사용자가 John이라고 가정해 보겠습니다.

내 git 저장소에 액세스하기 위해 SSH 프로토콜을 사용하고 있으므로 내 URL은 .ssh://[email protected]/path/to/git/myrepo/

루트는 그 아래의 모든 콘텐츠의 소유자입니다./path/to/git

John에게 아래 모든 항목에 대한 읽기/쓰기 액세스 권한을 부여하려고 합니다./path/to/git/myrepo

chmod액세스를 제어 하려고 시도했지만 setfacl둘 다 같은 방식으로 실패했습니다. 올바른 옵션을 사용하여 모든 권한을 재귀적으로 적용합니다.현재 기존 하위 디렉터리, /path/to/git/myrepo그러나 새 디렉터리가 생성되면 내 사용자는 새 디렉터리에 쓸 수 없습니다.

커밋할 때마다 권한을 다시 적용할 수 있는 몇 가지 후크가 git에 있다는 것을 알고 있지만 매우 기본적인 목적에 비해 너무 복잡해 보이기 때문에 잘못된 방향으로 가고 있다는 생각이 들기 시작했습니다.

묻다/path/to/git/myrepo:rw가 john 아래의 모든 항목에 액세스 하고 트리 구조의 변경 사항에 적응할 수 있도록 내 권한을 어떻게 설정해야 합니까 ?

2분기: 한발 물러서서 일반적인 접근 방식을 바꿔야 한다면 알려주세요.

편집하다: 질문은 있는 그대로 답변을 드렸으나, 질문이 잘못되었습니다. 올바른 질문은 "Ssh 액세스를 위해 서버에서 기본 git 저장소를 어떻게 구성합니까?"입니다. 내 대답을 참조하십시오.

답변1

myrepousers예를 들어 그룹을 만들고 git 사용자를 그룹에 추가합니다.

그런 다음 /path/to/git/myrepo 아래의 모든 그룹을 myrepousers로 변경합니다.

chown -R .myrepousers /path/to/git/myrepo

그런 다음 권한을 수정합니다.

chmod -R g+w /path/to/git/myrepo
find /path/to/git/myrepo -type d -exec chmod g+s {} \;

모든 것이 준비되어 있어야 합니다.

답변2

사실 이는 잘못된 접근 방식입니다. 추가 조사 끝에 제 경우에는 저장소의 파일 시스템에 대한 권한을 처리하기 위해 git의 내장 기능을 사용해야 한다는 사실을 발견했습니다.

이는 기본적으로 다음 값을 가질 수 있는 sharedoptions 를 통해 수행됩니다 .git init

  • group: 파일 및 디렉터리에 사용자 및 그룹 쓰기 권한이 있고 다른 모든 사람에게는 읽기 권한이 있도록 저장소를 초기화합니다.
  • 0660: 동일하지만 다른 사람은 읽기 권한을 갖고 있지 않습니다.

새로 생성된 디렉터리와 파일에는 자동으로 올바른 권한이 부여됩니다. git init기존 저장소를 사용하여 내용 손실 없이 재구성할 수도 있습니다 .

그래서 결국 내가 해야 할 일은 다음과 같았다.

  • 그룹 만들기mygitrepo
  • 사용자를 추가하세요.
  • chmod -R git 저장소root:mygitrepo

이제 그룹의 모든 사용자는 파일 시스템 권한에 영향을 주지 않고 다른 누구도 풀/푸시할 수 없습니다.

git init --bare --shared=0660

http://www.kernel.org/pub/software/scm/git/docs/git-init.html더 많은 정보를 알고 싶습니다.

답변3

ACL이 지원되는 경우 기본 ACL을 사용하여 이를 수행할 수 있습니다. 를 실행할 때 이러한 사항을 잊어버리기 쉽습니다 ls -l.

find /path/to/git/myrepo -type d -exec setfacl -m d:u:john:rwx {} +

그러나 나는 당신이 좀 더 체계적인 일을 하고 싶어할 것이라고 생각합니다. Gitolite를 배포하면 더 나은 솔루션이 제공될 수 있습니다.

관련 정보