I am looking for a SVN setup that allows by repository permissions without using SSH. At the moment we have an SVN server with several repos and are accessing it through the SSH+SVN protocol. I created a UNIX group for each repository and add the users who needed access to that group. Essentially I am using the UNIX file permissions for access control. However we have encountered an issue when we moved to Windows 8 and the Cisco Any Connect Client for VPN access where we cannot open SSH tunnels, for whatever reason I don't know, networking and VPN is not my area of expertise. Anyway I have been asked to look into an alternative setup for our SVN server.
As far as I know the other protocols available are SVN, HTTP, and HTTPS. At one point we were using HTTP with basic_auth but anyone who had a password could read/write to all repos. We want to lock down access to a by repository basis. Is there anyway to do this with SVN using the SVN or HTTP protocol. We also want it hands off as much as possible for management purposes, meaning I don't want to have to maintain a vhost and password file for every repo. Any advice or suggestions are appreciated. We have moved to Git for new projects but still have several in SVN that developers don't want to move.
FYI, the server is Linux, CentOS 6.4 so preferable a Linux solution.
Okay So I tried setting up path based authentication but I'm running into some problems so I hope someone can help.
Here is my svn.conf file from /etc/httpd/conf.d/
LoadModule dav_svn_module modules/mod_dav_svn.so LoadModule authz_svn_module modules/mod_authz_svn.so <VirtualHost *:80> ServerName svn.test.net ServerAdmin admin.test.net ServerSignature Off <Location /svn> DAV svn SVNPath /home/svn/repos #SVNListParentPath on AuthType Basic AuthName "Test SVN Server" AuthUserFile /home/svn/svn-passwd AuthzSVNAccessFile /home/svn/svn-access Require valid-user </Location> ErrorLog /var/log/httpd/svn_error.log CustomLog /var/log/httpd/svn_access.log combined </VirtualHost>
The authentication seems to be working fine however no mater what path I enter it always seems to try to read from /home/svn/repos/format
[Sun Jan 19 06:19:30 2014] [error] [client 192.168.17.117] (20014)Internal error: Can't open file '/home/svn/repos/format': No such file or directory [Sun Jan 19 06:19:30 2014] [error] [client 192.168.17.117] Could not fetch resource information. [500, #0] [Sun Jan 19 06:19:30 2014] [error] [client 192.168.17.117] Could not open the requested SVN filesystem [500, #2] [Sun Jan 19 06:19:30 2014] [error] [client 192.168.17.117] Could not open the requested SVN filesystem [500, #2]
If I enter
http://svn.test.net.svn.repo2 I get the same message in the error log.
All the repos are stored at /home/svn/repos. Apache has ownership of the entire /home/svn directory recursively with rwx permissions. Is there something I'm missing or configured wrong?
In my svn-access file I have something like this
[groups] testgroup = testuser [/] * = r [/repo1] @testgroup1 = rw