Thank you very much
On 07/20/2011 10:27 PM, Geoff Hoffman wrote:
Andy,
I thought you were off Apache and onto svnserve. Anyway, I sent you
this info last week - maybe you missed it. It is pasted again below.
I will grant to you that it is tricky to set up. The david winter blog
post below spells it out perfectly... for a single repo setup,
multiple users. For multi-user, multi-repo setup see my pasted config
files below. One thing to note that is confusing is that if your repos
are at /subversion/repos/repo1 your <Location /svn> stays the same.
The /svn bit there is what appears in the URL address bar, its not a
filesystem path.
I have 10 repositories, project1 through project10, physically located
on Ubuntu filesystem at
/svn/project1
/svn/project2
...
/svn/project10
Here is my /etc/apache2/mods-available/dav_svn.conf (the comments come
with the file. This was installed using apt-get on Ubuntu 10.04 LTS.)
<Location /svn>
# Uncomment this to enable the repository
DAV svn
# Set this to the path to your repository
#SVNPath /svn
# Alternatively, use SVNParentPath if you have multiple repositories
under
# under a single directory (/var/lib/svn/repo1, /var/lib/svn/repo2,
...).
# You need either SVNPath and SVNParentPath, but not both.
SVNParentPath /svn
SVNListParentPath on
This was the line missing from my config file; It allows me to see the
overall pictures. Thanks!
# From
http://www.redmine.org/projects/redmine/wiki/Repositories_access_control_with_apache_mod_dav_svn_and_mod_perl
#Order deny,allow
Deny from all
Satisfy any
Makes sense. I changed mine to fit yours.
# Access control is done at 3 levels: (1) Apache authentication, via
# any of several methods. A "Basic Auth" section is commented out
# below. (2) Apache <Limit> and <LimitExcept>, also commented out
# below. (3) mod_authz_svn is a svn-specific authorization module
# which offers fine-grained read/write access control for paths
# within a repository. (The first two layers are coarse-grained; you
# can only enable/disable access to an entire repository.) Note that
# mod_authz_svn is noticeably slower than the other two layers, so if
# you don't need the fine-grained control, don't configure it.
# Basic Authentication is repository-wide. It is not secure unless
# you are using https. See the 'htpasswd' command to create and
# manage the password file - and the documentation for the
# 'auth_basic' and 'authn_file' modules, which you will need for this
# (enable them with 'a2enmod').
AuthType Basic
AuthName "Subversion Repository"
AuthUserFile /etc/apache2/dav_svn.passwd
# To enable authorization via mod_authz_svn
AuthzSVNAccessFile /etc/apache2/dav_svn.authz
# The following three lines allow anonymous read, but make
# committers authenticate themselves. It requires the 'authz_user'
# module (enable it with 'a2enmod').
#<LimitExcept GET PROPFIND OPTIONS REPORT>
Require valid-user
#</LimitExcept>
</Location>
Now, here is my /etc/apache2/dav_svn.authz file.
[groups]
group1 = usera, userb, userc, userd, usere
group2 = userc, userb
group3 = userf, userg
group4 = usera, userb, userc, userd, usere, userf
group5 = userh
[/]
@group1 = rw
@group2 =
@group3 =
@group4 =
@group5 =
[project1:/]
@group1 = rw
[project2:/]
@group1 = rw
userg = rw
userf = rw
[project4:/]
@group1 = rw
[project5:/]
@group11 = rw
[project6:/]
@group1 = rw
@group5 = rw
[project7:/]
@group1 = rw
[project8:/]
@group1 = rw
[project9:/]
@group1 = rw
[project10:/]
@group1 = rw
@group4 = rw
I notice that you don't have any entries that read "... = r"; everyone
who can read can write also. No need?
There is no need to send you the dav_svn.passwd - it merely lists
usera through userh with their hashed password. You use the htpasswd
program to set your users up.
Here is the email I sent before...
I read (skimmed) all your posts, and I'm a little confused but I think
I know where you're going. I'm not sure if you're using Apache to
serve your repositories. If you are, you should check out this:
http://davidwinter.me/articles/2006/03/03/access-control-for-subversion-with-apache2-and-authz/
and this https://help.ubuntu.com/community/Subversion
I recently followed the blog above and got everything setup how I
think you want it. You can control user access to multiple repos in
three ways, the blog explains it all, except one thing. I found that
this is for folder-level control on one repository:
|[/]
@team = r
bob = rw
[/wowapp/trunk]
@team = r
@devteam = rw
brenda = rw|
In my authz control file, multiple repositories are done like this
(note the repo name and colon):
|[repoA:/]
@team = r
bob = rw
[repoB:/]
@team = r
@devteam = rw
brenda = rw|
I also put websvn on it, and use the configuration option
Looks interesting; I installed it. Lots of configuration to do; will do
later.
$config->useAuthenticationFile('/path/to/your/authz/file');
which I found on this stackoverflow QA
<http://serverfault.com/questions/13853/how-do-i-restrict-repository-access-via-websvn>.
http://serverfault.com/questions/13853/how-do-i-restrict-repository-access-via-websvn
Whoops! I did it, but it doesn't look right. Having recently learned the
difference between 'authentication' (who are you?) and 'authorization'
(what are you allowed to do?), I jumped at setting the authentication
file to an authorization file. Sure, it must work, but why?
Again, thank you for everything.