2014-05-12 124 views
1

我在svn repository中有一個項目,它包含更多的分支和標籤,並且有幾個用戶在同一個項目中工作,但在不同的分支中工作。我給特定用戶的寫權限只能訪問特定的分支,而不能訪問其他分支,同樣也可以讓另一個用戶寫入不同的分支。SVN訪問控制不起作用

步驟1:我有使用

htpasswd -m /etc/apache2/dav_svn.passwd username 

步驟2創建用戶:svnserve.conf的

[general] 
password-db = passwd 
realm = reponame 
anon-access = none 
auth-access = write 
authz-db = authz 

步驟3:passwd文件

username : passwd 

添加的用戶& passwd的其中使用在passwd文件中爲這個項目創建htpasswd。

第4步:AuthZ的

#[the_name_of_repository:/path_in_that_repository] 
[test:/] 
user1 = r 
user2 = r 

[test:/branches/data1] 
user1 : rw 

[test:/branches/data2] 
user2 : rw 

所以,現在user2只能訪問(提交,更新,結帳)data2分支,可以讀取所有其他文件夾,並user2可以訪問(提交,更新,結帳)data1科。從authz文件中,訪問控制無法正常工作。

我在做什麼錯?

+0

沒有理由結束這個問題。這是關於SO的主題並且相當清楚。 – Dialecticus

+0

如果你打算說「user1」可以訪問'data1'「,那麼你的規則都是正確的。你沒有解釋的是你如何服務你的倉庫(Apache,svnserve,svnserve + ssh)以及你如何指向你的配置。 – alroc

+0

另外,你的文件真的是'svnserver.conf'嗎?缺省值是'svnserve.conf'(注意缺少** r **)。 – alroc

回答

0

問題可能來自@alroc在評論中所說的內容。您正在使用svnserve.conf配置權限,但您爲Apache創建了用戶。

Apache的mod_dav_svn不讀取svnserve.conf。相反,您需要install mod_authz_svnset up an AuthzSVNAccessFile。該文件看起來與svnserve.conf具有相同的語法。

+0

其實,重新閱讀這個,你可能已經設置了mod_authz_svn ...我會在這裏留下這個答案,以防它對其他人來說很有用。 – Powerlord

+0

按照您在centos中提到的AuthzSVNAccessFile進行配置,但在訪問時出現禁止的錯誤。 – pravin09

0
  1. 你必須知道,哪種類型的數據存儲(基於http的,由Apache的服務,或svn爲主,svnserve服務),你必須和只能使用一個由兩個獨立的,不相關的認證類型:htpasswd爲阿帕奇,passwd爲svnserve的
  2. 驗證數據庫必須至少有用戶1 + user2的記錄
  3. authz文件必須在所有記錄使用正確的語法:你有兩個分支的失誤,corrrect格式爲

object = rights