我已經使用SVN和上傳的項目建立了一個存儲庫。有多個用戶在這些項目上工作。但是,並不是每個人都在爲所有項目工作並需要訪問。我想爲用戶設置每個項目的權限。如何在SVN中設置訪問控制?
我該如何做到這一點?
我已經使用SVN和上傳的項目建立了一個存儲庫。有多個用戶在這些項目上工作。但是,並不是每個人都在爲所有項目工作並需要訪問。我想爲用戶設置每個項目的權限。如何在SVN中設置訪問控制?
我該如何做到這一點?
最好的方法是設置Apache並通過它設置訪問權限。檢查svn book尋求幫助。如果你不想使用Apache,你也可以使用svnserve做簡單的訪問控制。
在你的svn \回購\ YourRepo \的conf文件夾,你會發現兩個文件,AuthZ的和passwd文件。這是你需要調整的兩個。
在passwd文件中,您需要添加一些用戶名和密碼。我假設你已經做到了這一點,因爲你在使用它的人:
[users]
User1=password1
User2=password2
然後,你要與AuthZ的文件相應權限分配:
創建你想要的概念羣體,並加入人它:
[groups]
allaccess = user1
someaccess = user2
然後從權限和項目級別中選擇他們具有的訪問權限。
因此,讓我們給我們的「所有訪問」的傢伙從根所有訪問:
[/]
@allaccess = rw
但只給我們「有些出入」人只讀到一些較低層次項目准入:
[/someproject]
@someaccess = r
您還可以在authz和passwd文件中找到一些簡單文檔。
雖然我會建議Apache的方法更好,SVN服務工作正常,並且非常簡單。
假設你的資料庫被稱爲 「my_repo」,它是保存在c:\ svn_repos:
中創建一個名爲 「passwd文件」 文件 「C:\ svn_repos \ my_repo \ CONF」。這個文件應該是這樣的:
[Users]
username = password
john = johns_password
steve = steves_password
在C:\ svn_repos \ my_repo \的conf \ svnserve.conf的設置
[general]
password-db = passwd
auth-access=read
auth-access=write
這將迫使用戶登錄到讀取或寫入該庫。
對每個存儲庫執行以下步驟,僅在每個存儲庫的passwd
文件中包含相應的用戶。
您可以使用svn + ssh :,然後它基於對給定位置的存儲庫的訪問控制。
這就是我在我的Uni上託管項目組資料庫的方式,我無法設置其他任何東西。只要擁有一個該組擁有的目錄,並在其中運行svn-admin(或其他任何東西),就意味着我不需要進行任何配置。
@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存儲庫中的任何用戶和所有用戶。
有一個問題,其抓到我了:
[repos:/path/to/dir/] # this won't work
但
[repos:/path/to/dir] # this is right
你需要不包含在目錄結尾的斜線,否則你會看到403 OPTIONS請求。
相關手冊頁面爲:http://svnbook.red-bean.com/en/1.7/svn.serverconfig.pathbasedauthz。html – ErichBSchulz 2012-11-29 02:42:15
注意:如果你通過ssh直接訪問版本庫,它不會工作 – 2016-02-07 15:48:42
當我給例如一個版本庫下的一個文件夾給用戶時,用戶只能通過直接鏈接訪問這個文件夾。用戶是否可以添加存儲庫,並且只有分配給他的文件夾顯示給他?謝謝回覆 。 – maoanz 2017-07-16 17:52:57