为SVN-Apache设置只读用户

时间:2012-02-15 08:00:09

标签: apache security svn

我遵循了“使用Subversion进行版本控制”一书中提出的关于设置基于Apache的SVN配置的正确方法的指示。到目前为止,我的“/etc/httpd/conf.d”目录中有一个“subversion.conf”文件。在该文件中,我定义了一个名为“/ svn”的位置,并将其映射到我的subversion存储库“/ x1 / svn /(repo1),(repo2),(etc)”的位置。也就是说 - 我还创建了一个拥有存储库区域的用户“svn”,并为Apache添加了组权限,因此可以从Apache访问存储库,而无需设置Apache拥有的所有内容(我认为这是一种奇怪的方法)的东西)。

反正。这是我遇到问题的问题。我希望设置一个“a”用户,如果我想让他们下载特定存储库代码库的源代码副本,我可以将其分发给用户。这里有一些复杂程度。

  1. A)允许他们授予对所有存储库的只读访问权限的一般用户
  2. B)为特定存储库提供特定的“只读”用户
  3. 无论哪种方式,而且我想更容易解释如何完成选项(A),如果我目前为我的网络服务器设置了配置,我该怎么办呢?以下是我的“subversion.conf”文件的副本,该文件工作正常,但要求访问所需存储库的任何用户都具有完全访问权限:

       <Location /svn>
       DAV svn
       SVNParentPath /x1/svn
    
       # Require SSL connection for password protection.
       # In order to do this Apache needs to use a self-signed certificate
       # Talk to Cordel and/or consult Apache Docs and OpenSSL docs
       # SSLRequireSSL
    
       AuthType Basic
       AuthName "Subversion Repository"
       AuthUserFile /etc/svn-auth-file
       Require valid-user
       </Location>
    

    那么 - 如何为SVNParentPath(选项A)中的所有存储库添加一个只读的普通用户?为了获得额外的功劳 - 我如何为各个存储库创建唯一的只读用户(选项B)。所有这些同时保留了必须在所有存储库上进行完全读写访问的身份验证的用户。

    我试图自己完成这个,但是,当试图消化'限制'方法的意义时,由于缺乏对哪些方法可用的直接解释以及每种方法实际上是什么而感到困惑关于SVN / Apache配置。我的意思是常识告诉我GET是GET(只读)而POST是写操作,但这只是常识。我编程的时间太长,以至于假设某些A-Hole没有创建GET操作并且能够写入数据。这是我的困境。任何人都能解释一下吗?

    谢谢!

1 个答案:

答案 0 :(得分:8)

查看Path Based Authorization文件,您可以使用以下命令定义只读用户:

[/]
username = r

或者您可以为不同的存储库定义用户

[repo1:/]
username = r

[repo2:/]
username = r

要实现上述目标,您需要将以下内容添加到Apache配置中:

LoadModule authz_svn_module path/to/mod_authz_svn.so
...
AuthzSVNAccessFile /path/to/access/svnaccess