簡體   English   中英

如何在SVN中設置訪問控制?

[英]How do I set up access control in SVN?

我已經使用 SVN 設置了一個存儲庫並上傳了項目。 有多個用戶在處理這些項目。 但是,並不是每個人都需要訪問所有項目。 我想為每個項目設置用戶權限。

我怎樣才能做到這一點?

在您的svn\\repos\\YourRepo\\conf文件夾中,您會找到兩個文件, authzpasswd 這是您需要調整的兩個。

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

[users]
User1=password1
User2=password2

然后你想用authz文件相應地分配權限:

創建您想要的概念組,並向其中添加人員:

[groups]
allaccess = user1
someaccess = user2

然后從權限和項目級別選擇他們擁有的訪問權限。

因此,讓我們讓我們的“所有訪問”人員從根目錄獲得所有訪問權限:

[/]
@allaccess = rw

但只給我們的“一些訪問”人員只讀訪問一些較低級別的項目:

[/someproject]
@someaccess = r

您還將在authzpasswd文件中找到一些簡單的文檔。

@斯蒂芬貝利

要完成您的回答,您還可以通過存儲庫中的純文本文件將用戶權限委托給項目經理。

為此,您使用包含以下內容的默認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 管理員或項目經理將在其中修改和注冊用戶。

然后設置一個 pre-commit 鈎子,它會檢測修訂是否由該文件組成(並且僅由該文件組成)。

如果是,此鈎子的腳本將驗證純文本文件的內容並檢查每一行是否符合 SVN 語法。

然后提交后掛鈎將使用以下連接更新\\conf\\authz文件:

  • 上面顯示的 TEMPLATE 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 請求。

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

這就是我在我的大學托管項目組存儲庫的方式,在那里我無法設置任何其他內容。 只需擁有該組擁有的目錄,並在其中運行 svn-admin(或其他任何內容)就意味着我不需要進行任何配置。

雖然我建議 Apache 方法更好,但 SVN Serve 工作正常並且非常簡單。

假設您的存儲庫名為“my_repo”,並且存儲在 C:\\svn_repos 中:

  1. 在“C:\\svn_repos\\my_repo\\conf”中創建一個名為“passwd”的文件。 該文件應如下所示:

     [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文件中包含適當的用戶。

最好的方法是設置 Apache 並通過它設置訪問權限。 檢查svn 書以獲取幫助。 如果您不想使用 Apache,您也可以使用 svnserve 進行簡約的訪問控制。

Apache Subversion 支持基於路徑的授權,可幫助您為存儲庫(文件或目錄)中的路徑上的用戶和組帳戶配置精細權限。 基於路徑的授權支持三種訪問級別 - 無訪問權限、只讀和讀/寫。

基於路徑的授權權限使用特殊語法存儲在每個存儲庫或每個服務器的授權文件中。 這是 SVNBook 的一個例子:

[calc:/branches/calc/bug-142]
harry = rw
sally = r

當您需要具有許多路徑和帳戶的復雜權限結構時,您可以從 VisualSVN 服務器提供的基於 GUI 的權限管理工具中受益:

  • 服務器管理員可以通過 VisualSVN 服務器管理器控制台或 PowerShell 管理用戶和組權限,
  • 非管理員用戶可以通過 RepoCfg 管理權限。

VisualSVN 服務器管理器中的存儲庫權限在此處輸入圖片說明

PowerShell 中的存儲庫權限在此處輸入圖片說明

非管理員用戶可以通過 RepoCfg 工具管理權限在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM