사용자가 프로토콜을 통해 콘텐츠를 가져올 수 있는 공유 Git 저장소를 설정했습니다 ssh
.
git_group
특정 사용자 그룹(예:)의 사용자만 저장소에 액세스할 수 있도록 권한을 설정하고 싶습니다. 다음을 사용하여 생성된 파일을 그룹에서 액세스할 수 있도록 만들 수 있습니다.
- gid 설정:
chmod g+s
.recursively:find . -type d print0 | xargs -0 chmod g+s
. - 액세스 제어 목록에 기본값을 설정합니다.
sudo setfacl -R -m g:git_group:rwx .
그리고sudo setfacl -R -d -m g:git_group:rwx .
사용자를 제거하기 전까지는 이 모든 것이 괜찮아 보입니다 git_group
. 해당 사용자가 커밋을 푸시하면 해당 사용자는 git 저장소에 있는 특정 파일의 소유자가 됩니다. 그룹에서 제거된 후에도 사용자는 이러한 파일을 계속 수정할 수 있으며 일부 git 명령은 여전히 성공할 수 있습니다.
git 저장소에 있는 모든 파일의 소유자를 변경하면 저장소에 대한 사용자 액세스가 거부되지만, 그룹에서 사용자를 제거하는 것만으로 사용자의 액세스가 거부되도록 저장소를 설정할 수 있습니까?
내가 아는 한, 기본 Linux 파일 권한 하에서 그룹에 소유자보다 더 많은 권한을 부여하면 정의되지 않은 동작이 발생할 수 있습니다.
답변1
vorac의 커밋, 세분화된 권한을 확장하는 것은 전용 git 서버 소프트웨어를 사용하는 주요 이유 중 하나입니다.
Linux의 파일 시스템 권한에 의존하면 읽기 전용 권한 외에는 아무것도 수행되지 않습니다. 발견한 바와 같이, 다른 사용자가 저장소를 수정하면 자신이 업로드한 파일을 소유하고 해당 파일의 권한을 완전히 제어할 수 있으므로 실제로는 상당히 해로울 수 있습니다.
이 문제를 해결하는 유일한 방법은 사용자가 전용 Git 서버 소프트웨어를 통해 액세스하도록 하는 것입니다. 이를 통해 사용자는 여전히 SSH 프로토콜을 통해 액세스할 수 있지만 완전히 사용자 정의된 SSH 서버를 통해 또는 다음 조건에서 액세스할 수 있습니다.규조토, 매우 맞춤화된 SSH 사용자입니다.
매우 간단한 경량 설정에는 gitolite로 충분합니다. 시간이 지남에 따라 다음과 같은 보다 정교한 ERM 도구로 전환하고 싶을 수도 있습니다.GitLab.