Apache를 통해 SVN 서버에 대한 원격 액세스를 제공하려고 합니다. 상황은 다음과 같이 설명될 수 있습니다.
/root
/public-project
/trunk
/branches
/restricted-project
/trunk
/branches
두 프로젝트를 모두 포함하는 저장소는 하나만 있습니다.
공개 프로젝트는 누구나 볼 수 있습니다(보기만 가능, 수정 불가). 제한된 항목은 특정 그룹에 속한 사용자만 열람/수정이 가능합니다. 구성은 다음과 같습니다.
<Location "/root">
DAV svn
SVNPath [...]
SVNIndexXSLT [...]
[...]
<LimitExcept PROPFIND OPTIONS REPORT>
require ldap-group CN=SVN Administrators,OU=Subversion,DC=example,DC=com
</LimitExcept>
</location>
<Location "/root/public-project">
<LimitExcept GET PROPFIND OPTIONS REPORT>
require ldap-group CN=Project1 Contributors,OU=Subversion,DC=example,DC=com
</LimitExcept>
</location>
<Location "/root/restricted-project">
require ldap-group CN=Project2 Contributors,OU=Subversion,DC=example,DC=com
</location>
충분히 안전합니까, 아니면 게스트가 제한된 프로젝트의 민감한 정보에 접근할 가능성이 있습니까?
SVN을 통해 공개 프로젝트의 소스를 업데이트할 때 다음 오류가 발생합니다.
편집 작업의 루트를 열 수 있는 권한이 없습니다.
Apache error.log는 다음 요소를 보여줍니다.
업데이트 보고서 편집기를 구동하는 동안 오류가 발생했습니다. [500, #220000]
편집 작업의 루트를 열 수 있는 권한이 없습니다. [500, #220000]access.log의 경우 SVN 클라이언트가
PROPFIND
(응답: HTTP 207) 및OPTIONS
(응답: HTTP 200)을 생성했으며 마지막으로 다음을 수행했음을 보여줍니다."보고서 /root/!svn/vcc/기본 HTTP/1.1" 500 241
이 문제를 해결하려면 어떻게 해야 합니까? 즉, 공개 프로젝트에 대해 공개 읽기 전용 액세스를 활성화하고 제한된 프로젝트는 승인되지 않은 사용자에게 숨겨야 합니까?
참고: GET 권한을 부여하면 /root
게스트가 공개 프로젝트의 소스를 로드할 수 있을 뿐만 아니라 공개 동작이 기본 동작으로 설정됩니다. 나는 액세스를 제한하고 공개 프로젝트가 포함된 노드에만 부여하고 싶습니다.
답변1
처음부터 새로운 환경을 구축하고 그 구성을 가지고 놀았지만오직방법은 기본적으로 모든 것을 공개로 설정한 다음 특정 프로젝트를 명시적으로 제한하는 것입니다.
이는 완전히 어리석고 보안상 현명한 일입니다. 특히 많은 프로젝트가 생성되고 때로는 완전히 자동화되지 않은 상황에서 제한 사항을 적용하는 것을 잊어버려 실수를 저지르기 쉽습니다. 즉, 이는 또한 자동화를 더욱 추진하도록 강요하며 이는 유익할 수 있습니다.
누군가 설정을 가지고 놀고 싶다면 현재 사용된 구성을 제공할 수 있습니다.