답변:
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 /
이 문제를 공격 할 수있는 두 가지 방법이 있습니다.