close

繼之前講到如何架設一個 Apache Subversion Server 後
相信有些人也會使用到 SSPI 的認證機制, 例如像我一樣, 是把這個 Server 架在公司的網域內
使用這種認證機制的好處就在於你不需要額外為使用者建立帳號密碼
一切都透過公司的 Server 來提供即可
但壞處就在於公司裡所有的人都可以存取 Subversion 的 Server
如果你只想讓某一個部門的人使用呢
其實 Subversion 已經提供相關的 module 來使用了
不過在這先建議各位, Update 你的 Subversion 到 v1.4.3 版吧
因為相關的 module 在之前有 bug, 我也懶得去追踪開發團隊是在哪一版 fix 的
反正新的能用, 幹嘛不用呢, 至少我已經成功架起來了

這次的架設環境跟之前一樣, 只有 Subversion 的版本更新而已
Windows XP SP 2
Subversion v1.4.3
Apache 2.0.59

首先請將 \Subversion\bin\ 下的兩個 modules copy 到 \Apache2\modules\ 下
mod_authz_svn.so
mod_dav_svn.so

接著要修改在 \Apache2\conf\ 下的 httpd.conf 檔
<Location /SvnRepos/>
  DAV svn
  SVNListParentPath on
  SVNParentPath d:\svnrepos
  AuthType SSPI
  AuthName "test"
  Require valid-user
  SSPIAuth On
  SSPIAuthoritative On
  SSPIDomain domainname
  AuthzSVNAccessFile d:\svnaccess.txt
  SSPIOfferBasic On
</Location>

大部份的內容應該都跟最初架 SSPI Server 的設定一樣
在這只需要特別注意紅色的字
之前的 Location 只要寫上 "/SvnRepos" 即可
不過在這你必須多加一條斜線
這個是 mod_authz_svn.so 的 bug
當你使用 SVNParentPath 時, 如果沒加上那條斜線的話
你可能會看到如下的錯誤訊息
當然如果你是使用 SVNPath 的話, 就不在此限了



AuthzSVNAccessFile 就是這篇的目的啦
這邊你要指定你的權限控制檔案的位置
檔案的格式很簡單
====================================
[groups] // 這邊應該不用特別說明吧
group1=Domain\user1, Domain\user2 // 只是把一些使用者群組化起來
group2=Domain\user3, Domain\user4 // 方便之後的使用跟管理而已

[/] // 以下的使用者可存取之前設定的 SVNParentPath
(或 SVNPath) 下的所有 Repository
*= // 所有登入的使用者沒有任何讀寫的權限
@group1=rw // group1 的使用者可以有讀寫的權限
@group2=r // group2 的使用者只有讀的權限, 也就是不能做 commit

[test:/] // 以下的使用者只能存取之前設定的 SVNParentPath
(或 SVNPath) 下的 Test Repository
Domain\user5=rw //只有 user5 有讀寫權限
====================================

我們可以透過 accessfile 來設定個別使用者的權限, 也可以設定個別使用者對於各檔案庫及各目錄的權限
在這裡我們只需將 username 加入即可, 不須各別為他們設定密碼
這個繁雜的工作, 還是交給公司的 Server 就好, 也不用擔心定期更換密碼的問題了

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 約翰 的頭像
    約翰

    約翰的工作小記

    約翰 發表在 痞客邦 留言(1) 人氣()