?? svn用戶配置.txt
字號(hào):
背景假設(shè)
--------
廈門央瞬公司是一家電子元器件設(shè)備供應(yīng)商,其中有個(gè)ARM部門,專門負(fù)責(zé)ARM芯片的方案設(shè)計(jì)、銷售,并在北京、上海各設(shè)立了一個(gè)辦事處。對(duì)于工作日志,原先采用郵件方式發(fā)給經(jīng)理,但是這種方式有個(gè)缺點(diǎn),那就是不具備連續(xù)性,要看以前的日志必須一封一封郵件去查看,很麻煩。于是就想到利用 Subversion,讓員工在自己電腦上編輯日志,然后利用svn傳送回來(lái),既方便員工自己編寫日志,又方便對(duì)日志的歸檔處理,而且提交日志的時(shí)候只需要執(zhí)行一下 svn commit 即可,比發(fā)送郵件還要簡(jiǎn)單的多。
- svn服務(wù)器相關(guān)信息
- 服務(wù)器地址: 192.168.0.1
- 服務(wù)器OS: MS Windows 2000 Server Edition 中文版
- 用于存放日志的代碼庫(kù)本地目錄: ``D:\svn\arm``
- arm部門文檔的目錄結(jié)構(gòu)如下::
arm 部門名稱
├—diary 工作日志目錄
│ ├—headquarters 總部工作日志目錄
│ ├—beijing 北京辦日志目錄
│ └—shanghai 上海辦日志目錄
├—ref 公司公共文件參考目錄
└—temp 臨時(shí)文件目錄
- 人員情況
- morson,公司總經(jīng)理,不習(xí)慣使用電腦,更喜歡傳統(tǒng)的紙與筆,以及面對(duì)面的交流
- michael,arm事業(yè)部的部門經(jīng)理,沒(méi)事的時(shí)候喜歡弄點(diǎn)兒新技術(shù),用svn來(lái)管理日志,就是他想出來(lái)的主意
- scofield,北京辦人員,老員工,為人油滑難管
- lincon,上海辦人員,老員工,大老實(shí)人一個(gè)
- linda,總部協(xié)調(diào)員、秘書,文筆不錯(cuò),長(zhǎng)得也不錯(cuò)
- rory,單片機(jī)技術(shù)員,技術(shù)支持
- 訪問(wèn)權(quán)限需求分析
- 允許總經(jīng)理、部門經(jīng)理讀取所有文件。順便給他們開放寫權(quán)限,以便體現(xiàn)對(duì)他們職位的尊重,雖然對(duì)于某些文件來(lái)說(shuō),他們?nèi)魮碛小皩憽睓?quán)限其實(shí)也沒(méi)什么用處
- 除部門經(jīng)理外,所有其他人員,均只能看到本辦事處人員工作日志
- 不允許匿名訪問(wèn)
- ref目錄只允許經(jīng)理和秘書讀寫,對(duì)其他人只讀
- temp目錄人人都可以隨意讀寫
使用 svnserve.exe 作為 Subversion 服務(wù)器
----------------------------------------
本節(jié)描述如何利用 svnserve.exe 來(lái)作為代碼庫(kù)服務(wù)器端,實(shí)現(xiàn)上述功能。至于另外一種代碼庫(kù)服務(wù)器端,即利用 Apache 結(jié)合 mod_dav_svn.so 來(lái)實(shí)現(xiàn)的代碼庫(kù)服務(wù)器端,由于其對(duì)于本文敘述的內(nèi)容“實(shí)現(xiàn)精細(xì)的目錄訪問(wèn)權(quán)限控制”而言,與前者沒(méi)有太大的區(qū)別,故而略過(guò)不提。它們二者只是在初次安裝、配置方面存在一些不同,有興趣的讀者,可以參考其他文檔,重新實(shí)驗(yàn)下述步驟。
啟動(dòng) Subversion 服務(wù)
````````````````````
在服務(wù)器端,打開一個(gè)命令行窗口,用CD命令進(jìn)入 Subversion 安裝目錄下的 bin 目錄,運(yùn)行如下指令::
svnserve -d -r d:\svn
其中的 -d 參數(shù)表示 svnserve.exe 將會(huì)作為一個(gè)服務(wù)程序運(yùn)行在后臺(tái),而 -r 參數(shù)表示將 ``D:\svn`` 目錄指定為代碼庫(kù)的根目錄。這樣,當(dāng)客戶端使用類似 svn://192.168.0.1/foo 這樣內(nèi)容的 URL 來(lái)訪問(wèn)服務(wù)器時(shí)候,其所訪問(wèn)到的真實(shí)代碼庫(kù),其實(shí)就是 ``D:\svn\foo``
用上述命令行方式啟動(dòng)的 svn 服務(wù)有個(gè)小缺點(diǎn),就是在本試驗(yàn)過(guò)程中,服務(wù)器端必須要一直開著那個(gè)運(yùn)行了上述命令的DOS窗口,不能關(guān)閉它。如果不想看到這個(gè)窗口,可以將 svnserve 安裝成 windows 的一個(gè) services,安裝方式請(qǐng)參考其他文章。
建立代碼庫(kù)
``````````
在服務(wù)器端的 ``D:\svn`` 目錄下,建立一個(gè)名為 arm 的代碼庫(kù),命令如下::
D:\svn>svnadmin create arm
使用上述命令之后,如果不出問(wèn)題的話,在 ``D:\svn`` 目錄下就會(huì)多出一個(gè)叫做 ``arm`` 的目錄,其下具備 conf、dav、hooks、locks、db 等子目錄或文件,此即 **一個(gè)名為arm的代碼庫(kù)** 。從此,通過(guò) ``svn://192.168.0.1/arm`` 這樣的 URL,我們就可以對(duì)這個(gè)代碼庫(kù)進(jìn)行訪問(wèn)了。接下來(lái)就要進(jìn)入本文的正題了,也就是權(quán)限配置部分了。
其實(shí)進(jìn)入 ``arm\conf`` 目錄你就會(huì)發(fā)現(xiàn),它下面已經(jīng)存在三個(gè)寫了一些幫助信息和示例的配置文件,以幫助用戶盡早掌握其配置方法。這三個(gè)默認(rèn)的配置文件分別是 svnserve.conf、passwd、authz 。其中后兩者沒(méi)有后綴,對(duì)于 windows 系統(tǒng)的用戶來(lái)說(shuō),看起來(lái)總是有些怪異,所以在接下來(lái)的章節(jié)里面,我將它們兩個(gè)都給添加了個(gè) conf 后綴,以便管理。
編輯代碼庫(kù)基礎(chǔ)配置文件
``````````````````````
在服務(wù)器端,編輯代碼庫(kù)的 ``arm\conf\svnserve.conf`` 文件,如下::
[general]
password-db = passwd.conf
anon-access = none
auth-access = write
authz-db = authz.conf
管理用戶帳號(hào)
````````````
在服務(wù)器端,新建 ``arm\conf\passwd.conf`` 文件,如下::
[users]
morson = ShowMeTheMoney
michael = mysecretpassword
scofield = hellolittilekiller
lincon = asyouknows111
rory = 8809117
linda = IlikeWorldCup2006
建立目錄訪問(wèn)權(quán)限控制文件
````````````````````````
在服務(wù)器端,新建 ``arm\conf\authz.conf`` 文件,內(nèi)容如下::
[groups]
g_vip = morson
g_manager = michael
g_beijing = scofield
g_shanghai = lincon
g_headquarters = rory, linda
g_docs = linda
[arm:/]
@g_manager = rw
* = r
[arm:/diary/headquarters]
@g_manager = rw
@g_headquarters = rw
@g_vip = r
* =
[arm:/diary/beijing]
@g_manager = rw
@g_beijing = rw
@g_vip = r
* =
[arm:/diary/shanghai]
@g_manager = rw
@g_shanghai = rw
@g_vip = r
* =
[arm:/ref]
@g_manager = rw
@g_docs = rw
* = r
[arm:/temp]
* = rw
導(dǎo)入代碼
````````
在客戶機(jī) ``F:\temp`` 目錄下,建立好前述“背景假設(shè)”一節(jié)中描述的目錄結(jié)構(gòu),然后用命令 ``F:\temp>svn import arm svn://192.168.0.1/arm --username michael --password mysecretpassword`` 導(dǎo)入整個(gè)目錄結(jié)構(gòu)。
這條指令的精確意思是,將 arm 目錄下面的所有東西,導(dǎo)入到那個(gè)名叫 arm 的代碼庫(kù)中去。如果你不指定源目錄,則 svn 會(huì)默認(rèn)將當(dāng)前目錄作為源目錄。比如說(shuō),你處于 ``F:\temp`` 目錄下的時(shí)候,直接執(zhí)行 ``svn import svn://192.168.0.1/arm`` ,那么當(dāng)你取出你的代碼的時(shí)候,你會(huì)發(fā)現(xiàn),居然多了一層名為 arm 的目錄。結(jié)果,你就必須使用類似 ``svn://192.168.0.1/arm/arm`` 這樣怪異的URL,才能夠正確訪問(wèn)到你的代碼們。
這一點(diǎn)粗看好像不是特別重要,不過(guò)聯(lián)想到前述的目錄授權(quán)規(guī)則,可都是按照標(biāo)準(zhǔn)的項(xiàng)目目錄結(jié)構(gòu)來(lái)設(shè)計(jì)的。突然之間,你項(xiàng)目的根目錄之上,多出了一個(gè)名為 arm 的目錄,那么我們的所有目錄授權(quán)規(guī)則,基本上都要全部改過(guò)了,否則除了根目錄,你永遠(yuǎn)會(huì)得到一個(gè)莫名其妙的“access denied”。由于 Subversion 在這一步驟上的界面不夠人性化,因此這是初學(xué)者很容易弄混的地方之一。
測(cè)試
````
在服務(wù)器上,打開一個(gè) DOS Prompt 窗口,輸入如下指令::
svn co svn://127.0.0.1/arm --no-auth-cache --username rory --password 8809117
我們應(yīng)該得到如下目錄結(jié)構(gòu)::
arm
├—diary
│ └—headquarters
├—ref
└—temp
然后修改ref目錄下任意文件并提交,服務(wù)器將會(huì)報(bào)錯(cuò)“Access denied”,Bingo!
深入
====
本章將詳細(xì)介紹前一章所涉及的兩個(gè)配置文件, svnserve.conf 和 authz.conf,通過(guò)對(duì)配置逐行的描述,來(lái)闡明其中的一些細(xì)節(jié)含義。除此之外的其他配置、安裝等內(nèi)容,不是本文重點(diǎn),讀者若有什么疑問(wèn),請(qǐng)參考后面“參考文獻(xiàn)”中列出的一些文檔。
這里首先要注意一點(diǎn),任何配置文件的有效配置行,都 **不允許存在前置空格** ,否則程序可能會(huì)出錯(cuò),給你一個(gè) ``Option expected`` 的提示。也就是說(shuō),如果你直接從本文的純文本格式中拷貝了相關(guān)的配置行過(guò)去,需要手動(dòng)將前置的4個(gè)空格全部刪除。當(dāng)然了,如果你覺(jué)得一下子要?jiǎng)h除好多行的同樣數(shù)目的前置空格是一件苦差使,那么也許 UltraEdit 的“Column Mode”編輯模式,可以給你很大幫助。
svnserve.conf
-------------
``arm\conf\svnserve.conf`` 文件,是 svnserve.exe 這個(gè)服務(wù)器進(jìn)程的配置文件,我們逐行解釋如下。
首先,我們告訴 svnserve.exe,用戶名與密碼放在 passwd.conf 文件下。當(dāng)然,你可以改成任意的有效文件名,比如默認(rèn)的就是 passwd::
password-db = passwd.conf
接下來(lái)這兩行的意思,是說(shuō)只允許經(jīng)過(guò)驗(yàn)證的用戶,方可訪問(wèn)代碼庫(kù)。 那么哪些是“經(jīng)過(guò)驗(yàn)證的”用戶呢?噢,當(dāng)然,就是前面說(shuō)那些在 passwd.conf 文件里面持有用戶名密碼的家伙。這兩行的等號(hào)后面,目前只允許 read write none 三種值,你如果想實(shí)現(xiàn)一些特殊的值,比如說(shuō)“read-once”之類的,建議你自己動(dòng)手改源代碼,反正它也是自由軟件::
anon-access = none
auth-access = write
接下來(lái)就是最關(guān)鍵的一句呢,它告訴 svnserve.exe,項(xiàng)目目錄訪問(wèn)權(quán)限的相關(guān)配置是放在 authz.conf 文件里::
authz-db = authz.conf
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -