모든 SVN 리포지토리는 모든 개발자가 액세스 할 수있는 전용 시스템에서 호스팅됩니다. 때때로 우리는 우리가 소유하지 않거나 자신을 운영하지 않는 컴퓨터에서 저장소를 체크 아웃해야합니다. 현재 우리는 모두 자체 시스템 (SSH) 계정을 사용하지만 대신 사용할 수있는 일반적인 ‘checkoutsvn’사용자를 사용하고 싶습니다. 이 사용자는 리포지토리에서 체크 아웃하는 데만 사용되지만 시스템에 로그인 할 수 없습니다 (쉘 액세스 없음). 해당 계정의 기본 쉘을 / sbin / nologin으로 설정 하여이 작업을 시도했지만 svn + ssh에 쉘 액세스가 필요하기 때문에 SVN이 실패합니다.
어떻게합니까? 이것에 대한 좋은 해결책이 있습니까?
답변
내 웹 호스트에는 다음 지침이 있습니다.
nano 또는 FTP 클라이언트를 사용하여 ~ / .ssh / authorized_keys를 열고 다음을 모두 한 줄에 입력하십시오.
command="/usr/bin/svnserve -t -r /home/[username]/svn",no-port-forwarding,no-agent-forwarding,no-X11-forwarding,no-pty [public key text from id_rsa.pub]
이 계정에 대해 svn 사용자를 여러 명 보유하려면 ~ / .ssh / authorized_keys의 명령에도 –tunnel-user = 옵션이 제공되어야합니다. (웹 호스트) 사용자 이름이 아닙니다. 사용자의 체크인 및 체크 아웃을 표시 할 이름입니다.
그리고 svnserve 매뉴얼 페이지에서 :
-r root, --root=root
Sets the virtual root for repositories served by svnserve. The
pathname in URLs provided by the client will be interpreted rela‐
tive to this root, and will not be allowed to escape this root.
답변
약간의 생각 후에 나는 이것을 위해 svn + ssh를 사용하는 것이 아니라고 생각합니다. 따라서 https를 통해 svn으로 전환하여 훨씬 세밀한 제어를 제공합니다.