I'm trying to provide a remote access to SVN server through Apache. The situation can be illustrated like this:
/root /public-project /trunk /branches /restricted-project /trunk /branches
There is only one repository, which contains both projects.
The public projects can be viewed by anyone (only viewed, never modified). The restricted ones can be read/modified only by the users who belong to specific groups. The configuration is the following:
<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>
Is it secure enough, or there is a possibility for a guest to access sensitive information from the restricted project?
When updating the source of the public project through SVN, I get the following error:
Not authorized to open root of edit operation
Apache error.log shows the following elements:
A failure occurred while driving the update report editor [500, #220000]
Not authorized to open root of edit operation [500, #220000]
As for access.log, it shows that the SVN client made a bunch of
PROPFIND(response: HTTP 207) and
OPTIONS(response: HTTP 200), and finally:
"REPORT /root/!svn/vcc/default HTTP/1.1" 500 241
What should I do to resolve this problem, i.e. enable public read-only access for the public project, while keeping the restricted one hidden from unauthorized users?
Note: granting GET privilege on
/root makes it possible for a guest to load the source of the public project, but also makes the public behavior the default one. I would prefer restrict the access, and grant it only on nodes which contain public projects.