키 기반 인증과 함께 snv + ssh를 사용합니다. svn 사용자가 Subversion을 통해 리포지토리에 액세스하려면 지금 repo 파일을 파일 시스템에서 해당 사용자가 읽고 쓸 수 있도록 설정해야합니다.
ssh를 통해 서버에 로그인 할 때 사용자가 repo 데이터베이스를 삭제할 수는 없지만 여전히 코드를 체크 아웃하고 커밋 할 수 없도록하고 싶습니다.
내가 어떻게 할 수 있을지에 대한 생각?
답변
svn + ssh URL에 액세스하기 위해 svn 클라이언트는 “ssh -q user @ host svnserve -t”를 사용하여 svnserve 인스턴스를 시작하고 stdin / stdout을 통해 해당 인스턴스와 통신합니다.
사용자에게 일반 ssh 액세스가 필요한 경우 한 사용자 (chown -R svnserve : svnserve repo; chmod -R g-rwx, o-rwx repo)에 대한 액세스를 제한 하고 svnserve 명령을 다음과 같이 대체하여 저장소에 액세스하지 못하게 할 수 있습니다 . 이 setuid / setgid svnserve 래퍼 프로그램 .
답변
공유 사용자 환경에서는 실제 Subversion 서버를 설정 svnserve
하거나 Apache를 통해 설정하는 것이 좋습니다 . 이 환경에서는 모든 파일 액세스가 서버 프로세스의 사용자 계정으로 수행되므로 개별 사용자는 저장소 파일에 액세스 할 필요가 없습니다.
Subversion 책에는 서버 구성 선택에 관한 섹션 이 있습니다. 해당 섹션에서 (강조 광산) :
SSH 계정을 기반으로하는 기존 인프라가 있고 사용자가 서버 시스템에 이미 시스템 계정을 가지고있는 경우 svnserve-over-SSH 솔루션을 배포하는 것이 좋습니다. 그렇지 않으면이 옵션을 대중에게 널리 권장하지 않습니다. 일반적으로 사용자가 완전한 시스템 계정이 아닌 svnserve 또는 Apache에서 관리하는 (가상) 계정을 통해 저장소에 액세스하는 것이 더 안전하다고 간주됩니다.
답변
이 사이트에는 몇 가지 유용한 트릭이 있습니다. http://svn.apache.org/repos/asf/subversion/trunk/notes/ssh-tricks
그 중 어느 것도 당신에게 효과가 없다면, 해결 방법으로 트릭을 할 수 있습니까? 커밋 후크에 다음과 같은 것을 추가하여 누군가가 커밋 할 때마다 리포지토리의 백업을 수행 할 수 있습니다. sudo rsync -a / my / repo / path / my / closed / path /
답변
이 문제를 공격 할 수있는 두 가지 방법이 있습니다.
답변
나는 Greg와 Olaf와 동의합니다-https 액세스로 이동하십시오. 나는 꽤 오랫동안 그러한 설정을 사용하고 있으며 실제로 어떤 단점도 보지 못합니다.
저장소 내에서 세분화 된 액세스 제어의 추가 이점을 얻을 수 있으므로 일부 사용자는 읽기 전용으로, 일부 사용자는 일부 사용자 만 액세스 할 수 있습니다.