2011-07-19 36 views
1

我想限制訪問我的本地Subversion服務器上的存儲庫。我已經使用Apache和dav_svn_moduleauthz_svn_module進行設置。目前它運行良好,用戶登錄,並可以提交罰款。如何配置DAV svn訪問?

我想實現的是一個只能由單個用戶讀取和寫入的單一存儲庫。

/etc/httpd/conf.d/subversion.conf如下

<Location /svn> 
    DAV svn 
    SVNParentPath /var/www/svn 

    # Limit write permission to list of valid users. 
    <LimitExcept GET PROPFIND OPTIONS REPORT> 
     # Require SSL connection for password protection. 
     # SSLRequireSSL 

     AuthType Basic 
     AuthName "Subversion repositories" 
     AuthUserFile /etc/svn-auth-users 
     Require valid-user 
     AuthzSVNAccessFile /etc/svnauthz.conf 
    </LimitExcept> 
</Location> 

/etc/svnauthz.conf如下所示,

[groups] 
devs = david.yell,user2,user3 

[/] 
$authenticated = rw 
@devs = rw 
* = 

然而,這是目前限制訪問所有存儲庫中的服務器,這是不太理想的。我如何着手將訪問配置爲特定於單個存儲庫?

另外,這是一個內部服務器,所以儘管我非常感謝生產建議,但這不是必需的。

更新
我已經更新了我現在svnauthz.conf文件,

[groups] 
devs = david.yell,user2,user3 

[ProtectedRepo:/] 
david.yell = rw 
* = 

[/] 
$authenticated = rw 
@devs = rw 
* = 

我想用這個作爲參考,http://svnbook.red-bean.com/en/1.4/svn.serverconfig.pathbasedauthz.html但在這裏引用

更具體:部分名稱的值是 表單[repos-name:path]或表單[path]中的任一個。如果您使用的是 SVNParentPath指令,則在部分中指定存儲庫 名稱很重要。如果你忽略它們,那麼像 [/ some/dir]這樣的部分將匹配每個存儲庫中的路徑/ some/dir。

這是否意味着我需要聲明服務器上的每一個回購?目前約有30個

+1

設置對用戶存儲庫/路徑的訪問權限。 http://svnbook.red-bean.com/en/1.4/svn.serverconfig.pathbasedauthz.html –

+0

感謝您的鏈接,我現在有這個設置。然而,我的'受保護;回購將不允許訪問。 –

+0

只需要說一下你使用的「$ authenticated」語法:我不知道這是存在的。這是記錄在某處嗎?我只能在http://svn.apache.org/repos/asf/subversion/trunk/subversion/libsvn_repos/authz.c找到它 –

回答

1

設置每個目錄的訪問控制以區分每個WEBDAV存儲庫/路徑的用戶權限。

對於Apache,需要加載mod_authz_svn模塊,然後添加AuthzSVNAccessFile指令(在httpd.conf文件中)指向您自己的規則文件。 (有關完整說明,請參閱「按目錄訪問控制」一節。)如果您使用的是svnserve,那麼您需要將authz-db變量(在svnserve.conf中)指向您的規則文件。

可以使用第二個Apache httpd模塊mod_authz_svn設置更細粒度的權限。該模塊獲取從客戶端傳遞到服務器的各種不透明URL,要求mod_dav_svn對其進行解碼,然後根據配置文件中定義的訪問策略來否決請求。

如果您已經從源代碼構建Subversion,mod_authz_svn會自動構建並與mod_dav_svn一起安裝。許多二進制發行版也會自動安裝它。要驗證它是否正確安裝,請確保它在httpd中的mod_dav_svn的LoadModule指令後面。CONF:

參考