Subversion權限設定範例說明

..

有網友因為剛由CVS轉換到Subversion,詢問了些關於權限控管上的問題:

  1. CVSNT的使用者可以透過WinCVS去更改自已的密碼,那Subversion呢?
  2. CVSNT的使用者可以透過WinCVS去建立檔案庫,那Subversion呢?CVSNT在權限的管理上可以對檔案庫,檔案庫內的模組,賦予不同的權限,那Subversion呢?
  3. 搭配Apache在httpd.conf中的設定不是會越長越大?
  4. CVSNT在多檔案庫的管理上相當直接,而Subversion在這就統一管理,也賦予專案內每一個模組同一個版號。

為了方便有相同疑問的朋友們參考,我藉由本篇文章說明我們平日使用的建置來回答部份問題。

為了能在公司網路內外都能存取到Subversion,我們建立了兩組設定,一組是內部網路使用的AD帳號(北中南都能使用),另一組是Apache Web Server的帳號,提供給大陸分公司與公司外的連線。當然這兩組URL存取到的是同一個檔案庫。

AD帳號的管理與密碼變更等都透過一般的AD功能就可處理,因此可以自行修改密碼,而帳號的格式是 Domain\使用者代碼,以 http://SVN主機/svn/路徑 的URL存取,其中/svn是你的檔案庫根目錄。

另一組使用Apache Web Server的帳號,就必須由管理員在主機上建立,再以svnpassword.exe建立加密密碼。為了和AD帳號使用的URL區別,使用的URL是 http://SVN主機/svnpub/路徑

在Apache的設定檔httpd.conf裡必須設定/svn與/svnpub兩組設定:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
## 存取權限要寫在最後一行的svnaccess.ad裡
<location /svn>
DAV svn
SVNPath D:\svn
AuthType SSPI
AuthName "Subversion repository"
Require valid-user
SSPIAuth On #turn that authentication on
SSPIAuthoritative On #turn that authentication on
SSPIDomain <domaincontroller>
SSPIOfferBasic On #let non-IE clients authenticate
 
AuthzSVNAccessFile "C:\Program Files\Apache Group\Apache2\passwd\svnaccess.ad"
</domaincontroller></location>
 
## Apache的帳號存於password檔案裡(AuthUserFile)
## 透過/svnpub連線的權限設定存於svnaccess.pub裡(AuthzSVNAccessFile)
<location /svnpub>
DAV svn
SVNPath D:\svn
AuthType Basic
AuthName "Subversion repository"
AuthUserFile "C:\Program Files\Apache Group\Apache2\passwd\password"
AuthzSVNAccessFile "C:\Program Files\Apache Group\Apache2\passwd\svnaccess.pub"
Require valid-user
SVNAutoversioning on
</location>

權限檔(svnaccess.ad或svnaccess.pub格式相同)的範例如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
## 設定群組,以方便指定目錄權限
[groups]
admin = admin1, admin2
g_project1 = adam, brown, cathy, dennis
g_project2 = brown, cathy
g_project3 = emma, fanny, cathy
 
## 設定根目錄權限,只有admin群組有讀寫權限
[/]
* =
@admin = rw
@g_project1 = r
@g_project2 = r
@g_project3 = r
 
[/trunk/project1]
@g_project1 = rw
 
[/branches/project2]
@g_project2 = rw
以上是簡單的權限控管的範例說明,建議你閱讀相關文件以取得更完整的資訊,剛巧保哥有一篇免費電子書:使用 Subversion 進行版本控制 (繁體中文版),應該有幫助。
想在手機閱讀更多程式設計資訊?下載【香港矽谷】Android應用
分享到Facebook
技術平台: Nasthon Systems