SVN + SSH 보안 지금 repo 파일을 파일 시스템에서 해당

키 기반 인증과 함께 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 /


답변

이 문제를 공격 할 수있는 두 가지 방법이 있습니다.

  • 제한된 쉘 액세스를 제공, 사용자는 자신의 계정과 SVN을 (쉘 접근이 다른 목적을 위해 필요한 경우 다른 계정을 필요로 할 수있다)를 사용할 수 있습니다 예를 들어, – 내가 발견 한 몇 가지 재미 를 위해 인터넷 검색을 참조 svnonly을 . 참고 : 직접 시도하지 않았습니다.
  • 클라이언트 인증서를 추가하여 https를 통해 하위 버전으로 마이그레이션하십시오. 나는 사람들이 이것에 대해 이야기하는 것을 보았지만, 결코 그것을 직접 한 적이 없다. 단점 : ssh 키 외에 클라이언트 인증서 배포가 필요합니다.

답변

나는 Greg와 Olaf와 동의합니다-https 액세스로 이동하십시오. 나는 꽤 오랫동안 그러한 설정을 사용하고 있으며 실제로 어떤 단점도 보지 못합니다.

저장소 내에서 세분화 된 액세스 제어의 추가 이점을 얻을 수 있으므로 일부 사용자는 읽기 전용으로, 일부 사용자는 일부 사용자 만 액세스 할 수 있습니다.