2008-09-17 27 views
77

我已經使用SVN和上傳的項目建立了一個存儲庫。有多個用戶在這些項目上工作。但是,並不是每個人都在爲所有項目工作並需要訪問。我想爲用戶設置每個項目的權限。如何在SVN中設置訪問控制?

我該如何做到這一點?

回答

3

最好的方法是設置Apache並通過它設置訪問權限。檢查svn book尋求幫助。如果你不想使用Apache,你也可以使用svnserve做簡單的訪問控制。

82

在你的svn \回購\ YourRepo \的conf文件夾,你會發現兩個文件,AuthZ的passwd文件。這是你需要調整的兩個。

passwd文件中,您需要添加一些用戶名和密碼。我假設你已經做到了這一點,因爲你在使用它的人:

[users] 
User1=password1 
User2=password2 

然後,你要與AuthZ的文件相應權限分配:

創建你想要的概念羣體,並加入人它:

[groups] 
allaccess = user1 
someaccess = user2 

然後從權限和項目級別中選擇他們具有的訪問權限。

因此,讓我們給我們的「所有訪問」的傢伙從根所有訪問:

[/] 
@allaccess = rw 

但只給我們「有些出入」人只讀到一些較低層次項目准入:

[/someproject] 
@someaccess = r 

您還可以在authzpasswd文件中找到一些簡單文檔。

+7

相關手冊頁面爲:http://svnbook.red-bean.com/en/1.7/svn.serverconfig.pathbasedauthz。html – ErichBSchulz 2012-11-29 02:42:15

+0

注意:如果你通過ssh直接訪問版本庫,它不會工作 – 2016-02-07 15:48:42

+0

當我給例如一個版本庫下的一個文件夾給用戶時,用戶只能通過直接鏈接訪問這個文件夾。用戶是否可以添加存儲庫,並且只有分配給他的文件夾顯示給他?謝謝回覆 。 – maoanz 2017-07-16 17:52:57

4

雖然我會建議Apache的方法更好,SVN服務工作正常,並且非常簡單。

假設你的資料庫被稱爲 「my_repo」,它是保存在c:\ svn_repos:

  1. 中創建一個名爲 「passwd文件」 文件 「C:\ svn_repos \ my_repo \ CONF」。這個文件應該是這樣的:

    [Users] 
    username = password 
    john = johns_password 
    steve = steves_password 
    
  2. 在C:\ svn_repos \ my_repo \的conf \ svnserve.conf的設置

    [general] 
    password-db = passwd 
    auth-access=read 
    auth-access=write 
    

這將迫使用戶登錄到讀取或寫入該庫。

對每個存儲庫執行以下步驟,僅在每個存儲庫的passwd文件中包含相應的用戶。

6

您可以使用svn + ssh :,然後它基於對給定位置的存儲庫的訪問控制。

這就是我在我的Uni上託管項目組資料庫的方式,我無法設置其他任何東西。只要擁有一個該組擁有的目錄,並在其中運行svn-admin(或其他任何東西),就意味着我不需要進行任何配置。

26

@Stephen貝利

要完成你的答案,你也可以委派用戶權限的項目經理,通過在你的倉庫純文本文件。

要做到這一點,您需要使用默認的authz文件設置您的SVN數據庫,其中包含以下內容。

########################################################################### 
# The content of this file always precedes the content of the 
# $REPOS/admin/acl_descriptions.txt file. 
# It describes the immutable permissions on main folders. 
########################################################################### 
[groups] 
svnadmins = xxx,yyy,.... 

[/] 
@svnadmins = rw 
* = r 
[/admin] 
@svnadmins = rw 
@projadmins = r 
* = 

[/admin/acl_descriptions.txt] 
@projadmins = rw 

此默認authz文件授權SVN管理員修改你的SVN倉庫內的普通可視文本文件,名爲「/admin/acl_descriptions.txt」,其中SVN管理員或項目經理將修改和註冊用戶。

然後你設置一個預先提交的鉤子,它將檢測修訂版是否由該文件(以及僅該文件)組成。

如果是這樣的話,這個鉤子腳本會驗證你的純文本文件的內容,並檢查每一行是否符合SVN的正確語法。

然後,post-commit鉤子將更新\conf\authz文件與級聯的:

  • 模板上述authz文件呈現
  • 純文本文件/admin/acl_descriptions.txt

第一迭代由SVN管理員完成,他補充道:

[groups] 
projadmins = zzzz 

他承諾他的修改,並更新authz文件。

然後項目經理'zzzz'可以添加,刪除或聲明任何用戶組和他想要的任何用戶。 他提交文件並更新authz文件。

這樣,SVN管理員無需關注所有SVN存儲庫中的任何用戶和所有用戶

25

有一個問題,其抓到我了:

[repos:/path/to/dir/] # this won't work 

[repos:/path/to/dir] # this is right 

你需要不包含在目錄結尾的斜線,否則你會看到403 OPTIONS請求。