2013-11-22 64 views
0

我想在SVN中使用LDAP和AuthzSVNAccess設置基於補丁的授權,我的初始測試只是爲了給每個人提供讀/寫訪問權限,以便檢查配置工作正常。svn鎖和AuthzSVN在基於路徑的授權問題

我有我的Apache的conf爲:

<Location /svn/> 
    AuthName "Login with LDAP" 
    AuthType Basic 
    AuthBasicProvider ldap 
    AuthzLDAPAuthoritative on 
    AuthLDAPURL ldap://XXX.com:389/ou=XXX,dc=XXX,dc=XXX,dc=XXX?uid 
    SVNParentPath /var/www/svn 
    AuthzSVNAccessFile /var/www/svn/authorization.access 
    Satisfy Any 
    require valid-user 
</Location> 

我直接在/ var/WWW/SVN住各種SVN倉庫。

而且authorization.access看起來是這樣的:

[/] 
* = rw 

這肯定是發生作用,如果我將其更改爲* = r那麼我可以不再犯,所以我很高興,Apache是​​使用文件。

不過,雖然我可以檢出,提交回購瀏覽,更新我再也svn lock任何文件,我得到的錯誤:

Error: Server sent unexpected return value (401 Authorization Required) in response to LOCK request for '/svn/MyRepo/MyFile.txt'. 

是否有任何人知道是否需要有額外的配置svn lock和AuthzSVN?除了我可能需要的rw之外是否還有其他許可?或者可能在我當前的配置中出現錯誤。

謝謝,邁克。

回答

1

我看到的幾個問題。

1)您遺漏了DAV指令。然而,根據你所說的話,我猜這只是你在這裏發佈的內容的疏忽。

2)Satisfy any可能是您的問題的來源。 Satisfy any使授權規則成爲or'ed。所以無論mod_authz_svn允許訪問還是提示輸入密碼。當你想允許匿名和認證訪問時,你只是真的只想使用Satisfy any。如果你想要這樣做,爲了讓所有的東西都能正常工作,你必須刪除匿名寫入權限。我建議進行測試以下簡單AuthZ的文件:

[/] 
$anonymous = r 
$authenticated = rw 

你得到一個401這裏是因爲Subversion不支持匿名鎖的原因。所以它試圖讓你認證。但由於Satisfy any指令,密碼驗證永遠不會發揮作用。

3)你得到401的事實意味着你正在使用一個不是最新版本的Subversion。特別是你應該得到501未實現,因爲401實際上涉及到一個安全漏洞(CVE-2013-1847)。

所以我建議你upgrade to Subversion 1.7.13 or 1.8.4。如果你不想建立你自己的軟件包,我建議使用many sources of binary packages之一。

+0

我沒有DAV指令,一切工作正常。我假設因爲LDAP配置。 雖然滿足任何提示是絕對現貨,並已解決我的問題。謝謝。 我們目前僅支持SVN 1.6,並且在不久的將來,桌面上的升級會有所提升,感謝您的建議。 – mleonard87

+0

在你設置Subversion的Location塊中應該總是有一個「DAV SVN」指令,以便作出響應。它與認證無關。它告訴mod_dav它應該使用哪個提供者。沒有它,默認是mod_dav_fs,但是你需要mod_dav_svn來讓Subversion正常工作。你可能在你的配置中有其他地方,但如果你試圖在服務器上使用其他路徑,可能會導致問題,因爲mod_dav會嘗試提供服務。 –