Apache-2.2

在 SVN root 上設置什麼權限?

  • September 12, 2013

我正在嘗試通過 Apache 提供對 SVN 伺服器的遠端訪問。情況可以這樣說明:

/root
   /public-project
       /trunk
       /branches
   /restricted-project
       /trunk
       /branches

只有一個儲存庫,其中包含兩個項目。

任何人都可以查看公共項目(僅查看,從不修改)。受限制的只能由屬於特定組的使用者讀取/修改。配置如下:

<Location "/root">
 DAV svn
 SVNPath [...]
 SVNIndexXSLT [...]
 [...]
 <LimitExcept PROPFIND OPTIONS REPORT>
   require ldap-group CN=SVN Administrators,OU=Subversion,DC=example,DC=com
 </LimitExcept>
</location>

<Location "/root/public-project">
 <LimitExcept GET PROPFIND OPTIONS REPORT>
   require ldap-group CN=Project1 Contributors,OU=Subversion,DC=example,DC=com
 </LimitExcept>
</location>

<Location "/root/restricted-project">
 require ldap-group CN=Project2 Contributors,OU=Subversion,DC=example,DC=com
</location>
  1. 它是否足夠安全,或者訪客有可能從受限制的項目中訪問敏感資訊?
  2. 通過 SVN 更新公共項目的源時,出現以下錯誤:

無權打開編輯操作的根目錄

Apache error.log 顯示以下元素:

驅動更新報告編輯器時發生故障

$$ 500, #220000 $$

無權打開編輯操作的根目錄 $$ 500, #220000 $$

至於access.log,顯示SVN客戶端發了一堆PROPFIND(response: HTTP 207)和OPTIONS(response: HTTP 200),最後:

“報告 /root/!svn/vcc/預設 HTTP/1.1” 500 241

我應該怎麼做才能解決這個問題,即為公共項目啟用公共只讀訪問,同時對未經授權的使用者隱藏受限項目?

注意:授予 GET 權限/root使來賓可以載入公共項目的原始碼,但也會使公共行為成為預設行為。我寧願限制訪問,只在包含公共項目的節點上授予它。

我從頭開始建構了一個新環境並使用它的配置,但似乎唯一的方法是預設將所有內容設置為公共,然後明確限制特定項目。

這是完全愚蠢的,安全方面的,特別是在創建大量項目的情況下,有時不是完全自動化的,很容易因為忘記設置限製而犯錯誤。話雖如此,它也迫使進一步推動自動化,這只會是有益的。

如果有人想使用這些設置,我可以提供目前使用的配置。

引用自:https://serverfault.com/questions/538036