我正在嘗試透過 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>
是否足夠安全,或者訪客有可能存取受限項目中的敏感資訊?
透過SVN更新公共專案的來源時,出現以下錯誤:
無權開啟編輯操作的根目錄
Apache error.log 顯示以下元素:
驅動程式更新報告編輯器時發生故障 [500, #220000]
無權開啟編輯操作的根目錄 [500, #220000]至於access.log,它顯示SVN客戶端發出了一堆
PROPFIND
(response: HTTP 207)和OPTIONS
(response: HTTP 200),最後:“報告 /root/!svn/vcc/default HTTP/1.1” 500 241
我應該如何解決這個問題,即為公共項目啟用公共只讀訪問,同時對未經授權的用戶隱藏受限項目?
注意:授予 GET 權限/root
使來賓可以載入公共專案的原始程式碼,但也使公共行為成為預設行為。我更願意限制存取權限,並僅在包含公共專案的節點上授予存取權限。
答案1
我從頭開始建立了一個全新的環境並使用了它的配置,但看起來僅有的方法是將所有內容預設為公開,然後明確限制特定項目。
從安全角度來看,這是完全愚蠢的,特別是在創建大量專案的情況下,有時不是完全自動化的,很容易因忘記施加限製而犯錯。話雖如此,它也迫使進一步推動自動化,這只會是有益的。
如果有人想使用這些設置,我可以提供目前使用的配置。