無法在顛覆中設置基於路徑的身份驗證
我已經無數次地按照 subversion 書嘗試在我們的 subversion 伺服器上設置正確的路徑授權,但我無法完成這項工作。這是我的訪問規則文件:
[groups] sales-admin = alexa, miked, chrism [/] $authenticated = rw [Product_Sales:/] ~@sales-admin =
這應該做的是讓所有經過身份驗證的使用者訪問託管在此伺服器上的每個儲存庫,但將 Product_Sales 儲存庫的讀寫訪問權限限制為 sales-admin 組。但是,實際上並非如此,我的權限都沒有正常工作。以下是每個案例中發生的情況:
- 當我嘗試從任何其他儲存庫更新、送出或簽出時,我收到“禁止訪問”錯誤,並且即使在從 TortoiseSVN 清除我保存的憑據後,也無法進行身份驗證。
- 這 $ authenticated token doesn’t work. If I replace " $ authenticated = rw" with “* = rw”,我再次重新獲得訪問權限,但即使我沒有提供任何憑據,也不再要求登錄。嘗試送出確實會強制我登錄,但我需要在以下情況下始終進行身份驗證與儲存庫互動,包括只讀操作。
- 在 Product_Sales 儲存庫上設置權限根本不會讓我訪問 Product_Sales,即使我在伺服器的根目錄上設置了 * = rw。
我需要知道我的訪問規則出了什麼問題。在過去的幾年中,我曾多次嘗試使基於路徑的授權工作,但無濟於事。如果有人可以在這裡幫我一把,我將不勝感激。我只想知道我對 Subversion Book 中基於路徑的身份驗證解釋有什麼誤解。
http://svnbook.red-bean.com/en/1.7/svn.serverconfig.pathbasedauthz.html
編輯:這是我的顛覆伺服器資訊
Collabnet Subversion Edge 3.2.2-3395.103
顛覆 1.7.8-3395.103
我還沒有明確的答案(還),只有一些想法
如果我將“$authenticated = rw”替換為“* = rw”,我將重新獲得訪問權限,但即使我沒有提供任何憑據,也不再要求登錄
* = rw
確切地說是“每個人都可以讀寫”,每個人都是“甚至是匿名的”。你有基於 Apache 或 svnserve 的 SVN 伺服器嗎?如果是 Apache,在基於路徑的訪問之前,您必須(必須)在 Apache 層限制對儲存庫的訪問而且,順便說一句,魔法令牌適用於 SVN 1.5+(有機會擁有舊版本嗎?)
更新
調試過程
- 獲得對所有儲存庫的“僅經過身份驗證”的訪問權限(匿名甚至無法讀取)。對於 httpd.conf 中與 svn 相關的位置,它將是(最小版本,基本身份驗證 - 壞)
DAV svn
SVNListParentPath on
SVNParentPath ...
AuthName ...
AuthType Basic
AuthBasicProvider file
AuthUserFile ...
# AuthzSVNAccessFile ...
Require valid-user
在此配置中,只有AuthUserFile 中列出的使用者才能完全訪問任何repo、repo 的任何部分
- 添加基於路徑的檢查,取消註釋 AuthzSVNAccessFile。因為使用配置匿名使用者將無法訪問任何 repo,
$authenticated
token 變得過多,$authenticated == * 在這個受限區域- 為了
$$ Product_Sales:/ $$對於規則“只有一個組可以訪問”,我更喜歡防彈、重載的定義
[Product_Sales:/]
* =
@sales-admin = rw
即所有訪問權限都被顯式禁用,僅啟用相同顯式樣式的一組