Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
917 views
in Technique[技术] by (71.8m points)

apache - How to configure SVN web access for different write permissions?

I'm trying to configure SVN web access on Apache2 under Windows Server 2008 for different write permissions.

I have next Apache2 conf:

<Location /svn>
 SVNParentPath "E:SVN"

 DAV svn
 SVNListParentPath on
 AuthType Basic
 AuthName "Subversion repositories"
 Require valid-user

 AuthUserFile svn-auth.txt
 AuthzSVNAccessFile svn-acl.txt
</Location>

<Location /svn/foobar>
 SVNParentPath "E:SVNfoobar"

 DAV svn
 SVNListParentPath on
 AuthType Basic
 AuthName "Subversion repositories"
 Require valid-user

 AuthUserFile svn-auth.txt
 AuthzSVNAccessFile svn-acl.txt
</Location>

E:SVN is a root directory for all repositories - I want to list the all. It contains E:SVNest - is a project repository.

and E:SVNfoobar - is a sub-root directory containing E:SVNfoobarfoo and E:SVNfoobarar - project repositories.

File svn-auth.txt contains a number of user passwords generated by htpasswd.exe

File svn-acl.txt contains a write access rules, but it doesn't work! Event it contains only one global permission:

[/]
* = rw

What is the different between SVNPath and SVNParentPath in Apache2 config for SVN? Maybe it would be make a sense?

And of course it doesn't work too if I add a group or a user:

[groups]
full = abatishchev

[/]
* = r
@full = rw
abatishchev = rw

I'm getting 403 Forbiden.

What am I doing wrong? TIA!

Update: I found a record from error.log:

The URI does not contain the name of a repository.  [403, #190001]

What could it mean?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

SVNPath is for one repository, SVNParentPath is for a root directory containing several repositories. So you should remove your second location in the Apache configuration file because it conflicts with the first if you try to access http://<host>/svn/foobar.

You should put absolute paths for the access and authentication files, make sure the Apache service has read/write access to the parent directory and all the repositories, and read access to those access and authentication files, it is often overlooked in manual installations.

For example:

<Location /svn>
    RedirectMatch ^(/svn)$ $1/
    SVNParentPath E:SVN

    DAV svn
    SVNListParentPath on
    AuthType Basic
    AuthName "Subversion repositories"
    Require valid-user

    AuthUserFile C:SVNconfsvn-auth.txt
    AuthzSVNAccessFile C:SVNconfsvn-acl.txt
</Location>

You will find all the necessary information in Version Control with Subversion (this is the link to the latest version, though the Apache configuration settings haven't changed lately).

Then you should be able to specify global or individual permissions for groups and users, for your repositories. Examples of that can be found here, with the name you gave:

[groups]
full = abatishchev, anotherguy
main = abatishchev

[/]
* = r
@full = rw
abatishchev = rw

[foobar:/]
* =
@main = rw
full = r

[otherproject:/]
@main = rw
full = r

In this example, you have set general rules in [/], then particular rules that will prevail for foorbar (and everything below), and otherproject. You can even specify specific rules for individual directories of a repository.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...