環境:Windows Server 2008 R2 + VisualSVN Server 3.3.2。啟用 Web 修改密碼功能後,頁面可開啟、輸入新舊密碼,點擊修改卻提示「密碼修改失敗」。
根因
VisualSVN 的修改密碼實際是對 `Repositories` 目錄下的 `htpasswd` 檔案進行讀寫。**執行 VisualSVN 服務的 Windows 使用者 (通常是 `Network Service` 或自訂服務帳號) 必須擁有該檔案的「寫入」權限**。預設安裕常忽略此 ACL 設定。
修復步驟
- 定位檔案:`\htpasswd` (如 `D:\SVN\Repositories\htpasswd`)。
- 右鍵 → 內容 → 安全性 → 編輯 → 新增 → 輸入服務執行帳號 (或 `Everyone` 測試) → 勾選 **寫入/修改**。
- 重啟 VisualSVN Server 服務 (或 IIS 應用程式池)。
- 再次測試網頁修改密碼,應成功返回「密碼已更新」。
補充:若用 Apache + mod_authz_svn 手動搭建
- 同樣檢查 `AuthUserFile` 指向的 `htpasswd` 檔案權限。
- 確認 Apache 運行使用者 (Windows: `daemon`/`system`;Linux: `www-data`) 有寫入權限。
- SELinux (Linux) 需 `setsebool -P httpd_can_network_connect 1` 及檔案 context `httpd_sys_rw_content_t`。
核心:**密碼修改本質是檔案寫入,權限不到位,一切免談。**