windows cvs服務器配置

1、設置CVSROOT環境變量
set CVSROOT=:pserver:[email protected]/cvs
2、使用cvs默認的管理員登陸
cvs login
3、創建用戶
cvs passwd -a cvsuser
//輸入cvsuser的密碼
//再次輸入cvsuser的密碼

=====================================================================================
以下內容爲轉載

 

CVS 是目前最常用的版本控制和軟件配置系統。其開源性在其普及的過程中功不可沒,然而正因爲開源造成了其易用性較差。往往一個功能需要通過幾個看似不相干的操 作配合才能進行。Windows下CVS的多帳戶配置正是這樣一個相當重要的,但很不好操作的功能。幾個難點如下:

  1. CVS源自Unix系統,其Windows的移植版並沒有服務器功能。在Windows下一般採用安裝CVSNT這個軟件來建立CVS Repository,但CVSNT的操作方法和原始的CVS略微不同。
  2. CVS本身是命令行形式,其配置過程比較繁雜。
  3. CVS的多帳戶配置需要手動修改Repository的CVSROOT文件夾裏的文件,缺乏統一的界面。

在 安裝了CVSNT服務器之後,默認的用戶就是建立Repository的Windows系統的登陸帳戶,但在多人開發的時候,肯定沒人希望大家都使用同一 個名字來Commit;更重要的是,我們可能需要配置開發人員的權限,例如限制某些人只能看程序,而某些人可以Commit程序,某些人可以添加新的 Module。以下是詳細的步驟,環境是CVSNT 2.5.03 (Build 2151) + TortoiseCVS 1.8.25:

1. 使用CVSNT建立一個Repository。假設初始使用Windows的管理員administrator密碼登陸,Repository使用 Pserver協議,IP是1.2.3.4,端口號是2401,Repository名稱是/TestRep,密碼是123。這時的 administrator也是此Repository的管理員。

2. 爲了進行多用戶配置,必須修改Repository的CVSROOT目錄的幾個文件。首先在客戶端 將:pserver:[email protected]/TestRep設爲CVSROOT環境變量(請注意區分CVSROOT目錄和 CVSROOT環境變量)。然後用administrator登陸到CVS,最後Check Out出此CVSROOT目錄。命令如下所示:

cvs login
//輸入密碼123
cvs co CVSROOT

3. 在服務器端爲Windows添加一個專門用於CVS操作的Windows帳戶。所有的CVS帳戶都要映射到這個Windows帳戶上進行實際的操作。雖然 很多資料並沒有提到需要建立Windows帳戶,但我在實驗中發現沒有這種帳戶,CVS在後邊執行任何操作時都會報告沒有此帳戶的錯誤。假如這個新的帳戶 叫做cvsuser。使用Windows命令

net user cvsuser cvsuserpassword /Add

可 以添加此帳戶。在添加完成之後,一定要記得將/TestRep在服務器上的實際文件夾的權限裏添加cvsuser的讀寫權限,否則到最後任何映射到 cvsuser的CVS帳戶都會因爲沒有寫權限無法進行正常的commit操作。首先在服務器上的資源管理器裏的“工具”菜單裏找到“文件夾選項”,在隨 後出現的“查看”選項卡里找到“使用簡單文件夾共享”的項目,取消掉前面的勾,單擊確定。然後右擊/TestRep所在文件夾,單擊“屬性”。在隨後打開 的對話框裏可以看到“安全”選項卡。我們需要在這裏添加cvsuser的讀寫權限。

4. 爲CVS添加自己的帳戶。通過使用命令cvs passwd我們可以添加任意多個CVS帳戶(當然,只是針對當前的Repository)。所有的帳戶信息會被保存在CVSROOT目錄的passwd 文件當中。然而這個文件是不能Check Out出來的,只能在服務器那裏看到它,並且其保存的密碼信息是被加過密的。我們可以添加cvsadmin,user1,user2,anonymous 等用戶。例如添加cvsadmin時的命令是:

cvs passwd -a -r cvsuser cvsadmin
//輸入cvsadmin的密碼
//再次輸入cvsadmin的密碼

這 樣就新添了cvsadmin帳戶,並將其映射到Windows帳戶cvsuser上(-a表示添加一個賬戶,-r表示影射到操作系統的帳戶中。我期望將 cvsadmin作爲以後/TestRep的管理員。這一點十分重要,如果這時候不設置的話,再將CVS改爲“僅使用CVS帳戶校驗模式”之後就再也沒有 機會添加管理員了(因爲只有管理員可以看得到和操作CVSROOT目錄)。

5.設定 cvsadmin爲CVS管理員。在客戶端的CVSROOT目錄下新添一個名爲admin的文件。在裏面將每一個想要升爲管理員的CVS帳戶的帳戶名寫到 文件中,每行一個帳戶名。當然admin文件只有放到服務器,cvsadmin的升遷才能生效。但是,僅僅是這麼將admin文件提交上去是不能起作用 的。在提交它之前,必須將admin的信息添加到checkoutlist文件中。checkoutlist的格式在文件中有介紹,是“空格 文件名 空格 出錯信息 回車符”。我們在裏面添加一條記錄:

admin adminerror

特別注意admin前面一定要留一個空格。

6. 當新的CVS管理員和帳戶信息都準備好後,就要將/TestRep的帳戶校驗模式從“操作系統集成校驗模式”修改爲“僅使用CVS帳戶校驗”模式。這麼做 可以避免爲了在CVS中使用多用戶時需要操作Windows帳戶的麻煩。這個設置的地方在CVSROOT目錄中的config文件。打開客戶端的 config文件,將裏面的#SystemAuth=yes改爲SystemAuth=no(注意將#刪除後,SystemAuth前不能有空格)。修改 後保存config文件。

7.提交CVSROOT裏的所有更新到服務器,我們的設置就生效了。命令如下所示:

cd CVSROOT
cvs add -m "" admin
cvs commit -m ""

不 過在提交之前,你也許想先把CVSROOT的owner從原來的administrator修改爲cvsadmin。使用命令cvs chown可以做到這一點。在提交了CVSROOT目錄後,校驗模式就立刻改變了,cvsadmin也同時開始生效。這時,用之前的 administrator就無法使用CVS了。我們改用cvsadmin帳戶重新登陸,繼續下面的操作。

8. 修改讀寫權限。CVS有兩種讀寫權限的設置方法,一是粗粒度的,一是細粒度的。只有CVS管理員才能進行訪問權限的修改。粗粒度的方法是在CVSROOT 中添加readers或者writers文件來實現。在readers裏添加的任何一個帳戶對當前庫只擁有讀取權限,添加格式是每行一個帳戶名。例如,我 們在客戶端的CVSROOT目錄裏添加readers文件,將之前的一個新建帳戶anonymous放到裏面,然後commit這個readers文件到 服務器。anonymous就不能進行commit了。實際的測試結果是在使用anonymous登陸之後執行commit指令,系統會報告正常執行完 畢。但實際上,沒有任何東西被commit,暴露了CVS在人機界面上的不完善。writers文件的操作readers完全一樣。如果一個帳戶名被同時 寫到兩個文件裏,此帳戶只有只讀權限。細粒度的方法是使用chacl命令。例如/TestRep裏有3個工程,project1、project2、 project3。使用命令:

cvs chacl -u user1 -a none -d project1,project2,project3
cvs chacl -u user1 -a all -d project1
cvs chacl -u user1 -a read,write -d project2
cvs chacl -u user1 -a read -d project3

可以讓user1擁有對project1目錄的完全控制權,對project2目錄的讀寫權,和對project3目錄的只讀權。第一條命令首先刪除user1的所有權限,在隨後的3條命令裏分別設置了3個不同目錄權限。

9.使用帳戶組來組織帳戶。在客戶端的CVSROOT目錄下添加一個叫group的文件。此文件的格式是:

組名1:用戶名1,用戶名2,用戶名3,……
組名2:用戶名5,用戶名7,……
……

修改完group文件後commit它,然後通過chacl命令可以實現組權限的修改。

-------------------------------------------------------------------------

 

CVS操作手冊 Version 1.1 [轉]

——————————————————————————————————–
1 服務器端安裝過程
安裝前的注意事項:
 本操作手冊基於CVSNT 2.5.03 build 2382,操作界面以及選項設置都會隨版本的變化而發生一定的改變
 CVS容器(repository)、臨時文件夾(TEMP)必須安裝於CVSNT所在服務器
 CVSNT應作爲〔服務〕,且建議使用SYSTEM賬戶執行(原因有兩點:1、SYSTEM不具有網絡權限,也就是說不能被當作遠程服務來使用;2、當SYSTEM賬戶不進行操作的時候,CVSNT服務仍舊在線服務)
 CVSNT建議被運行在採用NTFS文件系統的服務器上(原因有兩點:1、NTFS文件系統具備CVS所需要的權限管理的基礎;2、NTFS文件系統更加穩定且能夠有更大地存儲能力)
1.1 CVSNT的安裝與配置
1.1.1 創建CVS容器和臨時文件夾
例如:D:/CVSNTRepositories (容器) D:/CVSTEMP (臨時)(請注意:臨時文件夾不可以位於操作系統臨時文件夾內。如:C:/winnt/temp 或者 C:/Documents and Settings中)

1.1.2 點擊CVSNT安裝程序
含 客戶端、服務器端,進行安裝。(請注意:1、如果服務器採用Windows XP、2003或者更高版本則,其〔WMI Service〕服務可能會引起權限拒絕錯誤,請在安裝前將其關閉,安裝結束後重新開啓即可;2、注意客戶端與服務器端版本匹配問題;3、安裝後可能需要 重新啓動)
1.1.3 CVS容器設置
 通過〔開始〕-〔程序〕-〔CVSNT〕-〔CVSNT Control Panel〕打開CVS控制面板(或在控制面板中打開)
 對設置變更前,請停止CVSNT、CVSNT Lock服務
 點擊〔Repository configuration〕選項卡
 點擊〔Add〕新增容器:其中〔Location〕欄位填寫/選擇容器所在目錄(在步驟1中創建的);〔Name〕欄位填寫容器名稱,必須遵守規則:必須 以“/”開頭,形如“/CVSNTRoot”。(請注意:如果想要新的容器生效,必須勾選〔Publish Repository〕〔Online〕選項)
1.1.4 CVS臨時文件夾設置
點擊〔Server Settings〕選項卡,在〔Temporary〕中選擇步驟1中創建的CVS臨時文件夾。
重新啓動CVSNT、CVSNT Lock服務,如果服務不能啓動,請檢查容器所在文件夾權限設置或重新啓動服務器。
1.1.5 更新CVS服務器中的二進制文件列表
(請注意:這是非常重要的,如果不將已知二進制文件類型加入二進制文件列表,當上傳此類文件時文件可能被損壞)
在命令行提示符下操作:
SET CVSROOT=D:/CVSNTRepositories/Repo1(以Administrator登錄服務器,本地操作模式)
Cvs co CVSROOT
Cd CVSROOT
Notepad cvswrappers (在記事本中編輯列表文件例如)
*.cab -k ‘b’
*.class -k ‘b’
*.doc -k ‘b’
*.dll -k ‘b’
*.exe -k ‘b’
*.exp -k ‘b’
*.gif -k ‘b’
*.gz -k ‘b’
*.jar -k ‘b’
*.jpg -k ‘b’
*.jpeg -k ‘b’
*.lib -k ‘b’
*.msi -k ‘b’
*.mso -k ‘b’
*.pfw -k ‘b’
*.png -k ‘b’
*.ppt -k ‘b’
*.sit -k ‘b’
*.tar -k ‘b’
*.tlb -k ‘b’
*.vsd -k ‘b’
*.xls -k ‘b’
*.wmz -k ‘b’
*.zip -k ‘b’
Cvs commit
1.1.6 服務器端CVS權限設置
CVSNT服務器的權限控制包括兩部分:
 NTFS ACL 阻止沒有經過授權的人訪問CVS容器
 CVSNT ACL 阻止開發人員commit錯誤的版本分支
CVSNT登錄方式有兩種:
 Windows用戶驗證與CVSNT用戶驗證的混合驗證模式
 CVSNT用戶驗證的單一驗證模式
由於Windows不允許任何非真實帳戶的對文件系統進行操作,所以使用CVSNT創建的用戶其實是Windows用戶的別名(映射),其關係如下圖:

本文主要介紹混合模式驗證的設置方法。

某容器權限的設置步驟:
1) 以Administrator登錄服務器
2) 爲CVSNT創建Windows用戶組、用戶
Group Name 描述
CVSAdmins 所有的CVS容器管理權,允許更新所有容器中的文件
CVSAdmin-XXX 某容器的管理權
CVSUsers 所有CVS用戶,可以checkout文件,但checkin/commit動作受到CVSROOT/writers文件控制
請注意:如果CVSNT部署於Windows2003+的服務器上,請確認用戶組擁有執行CMD.EXE的權限,因爲操作系統默認是沒有的
3) 設置CVSROOT權限控制文件
CVSROOT filename 描述
Admin 被允許執行CVS管理員指令的用戶名單 (不受源代碼管理控制)
Passwd 記錄CVSNT帳戶名稱和密碼 (經過加密,不受源代碼管理控制)
Group 記錄CVSNT組信息,格式:
組名:用戶名1 用戶名2 用戶名3 ……
Readers 可以讀取數據的用戶名單
Writers 被允許進行寫操作(commit)的用戶名單
config 某CVSNT容器的配置文檔
 SystemAuth Yes:混合驗證 No:單一驗證
 以Administrator登錄服務器,切換到命令行方式
 切換到CVS容器所在的文件夾中,例如:D:/CVSNTRepositories/Repo1/CVSROOT
 設置admin文件
通過“echo cvsadmin>> admin”新建admin文件,“username”與“admin”中間不能有空格
 設置writers、config文件(不要在CVS容器文件夾中進行)
Set CVSROOT=:pserver:cvsadmin@host:/Repo1
Cvs login
Cvs co cvsroot
Cd cvsroot
Notepad config
Echo username>> writers (請注意:必須將自己所使用的用戶名也添加進去,否則會被死鎖,若死鎖請到CVS容器中刪除writers與writers.v文件即可)
Cvs add writers (當新建此文檔時使用)
Cvs commit
4) 設置CVSNT容器所在文件夾權限

Directory/File SYSTEM Administrators CVSAdmins
CVSAdmin-XXX CVSUsers 描述
./CVSNTTEMP Full 開放權限
./CVSNTRepositories Full Full Full Read
./CVSNTRepositories/Repo1 Full Read Full Full 單個容器
./CVSNTRepositories/Repo1/CVSROOT Full Read Full Read 避免普通用戶改變配置文件
./CVSNTRepositories/Repo1/CVSROOT/history Full Read Full Change 記錄CVS用戶歷史
./CVSNTRepositories/Repo1/CVSROOT/val-tags Full Read Full Change CVS用戶checkout
請注意:history文件在CVSNT 2.5.x版本後發生了較大的變化,CVSNT不會自動生成歷史記錄,所以容器Repo1中CVSROOT文件夾下沒有history文件需要手動創建一個空的文件並命名爲history

某容器內項目權限的設置:

1) 添加CVSNT用戶
語法:
cvs passwd [-a] [-x] [-X] [-r real_user] [-R] [-D domain] [username]
其 中,-a表示添加一個cvsnt用戶;-x表示取消一個cvsnt用戶;-X表示刪除一個cvsnt用戶;-r表示把一個cvsnt用戶和一個指定的系統 用戶綁定;-R表示取消一個cvsnt用戶和一個系統用戶的綁定;-D表示域;username表示要創建的cvsnt用戶
不加參數表示修改當前登錄用戶密碼
你可以使用以下命令來創建映射關係:
cvs passwd -a -r
2) 設置CVSNT用戶權限
語法:
 Chown
CVS chown [-R] user [directory…]
其中-R 表示遞歸。
cvs chown -R cvsadmin .
上述命令把當前目錄及其子目錄對應的服務器目錄的owner設置爲cvsadmin用戶。

 Chacl
CVS chacl [-R] [-r branch] [-u user] [-j branch] [-n] [-p priority] [-m message] [-a [no]{read|write|create|tag|control}[,…]] [-d] [file or directory…]
-R表示遞歸;
-r branch表示對分支的權限的修改;
-a表示設置用戶的權限;
-d表示刪除用戶的權限。
cvs chacl -R -u cvsuser2 -a read,write,create,tag .
上述命令賦予cvsuser2用戶當前目錄及其子目錄對應的服務器目錄的讀/寫/創建/打標籤的權限。
cvs chacl -u g2 -a read,nowrite HelloWorld.java
上述命令賦予g2羣組當前目錄下HelloWorld.java文檔的讀權限,拒絕其寫權限。
cvs chacl –u cvsuser2 –d .
上述命令取消cvsuser2 用戶對當前目錄對應的服務器目錄的所有權限。

 Lsacl
CVS lsacl [-dR] [file or directory …]
-d表示僅列出目錄權限,-R表示遞歸。

3) 請注意:這裏是一個CVSNT 2.5.03 build 2382 bug
當進入被cvs checkout出來的項目客戶端文件夾時,並且這時你並不是使用checkout所使用的帳戶登錄的,cvs會自動使你變更成爲checkout時所使用的帳戶。
危害描述:可以藉此漏洞奪得他人帳號控制權,甚至最高管理員權限。
解決方法:在使用時請勿在他人的計算機上使用自己的帳號checkout項目,尤其是管理員帳號。

1.1.7 測試CVSNT服務
經過以上設置,CVSNT服務器已經部署完畢,需要對其進行連接測試,在命令行模式下操作:
Set CVSROOT=:pserver:username@host:/Repo1
Cvs login
成功則無錯誤提示。

1.2 CopSSH的安裝與配置
在CVS應用中爲了提升數據傳輸的安全性,可以採用SSH通訊協議來替代pserver標準協議,在衆多SSH服務程序當中,截至筆者寫此文章之時,CopSSH是對各種客戶端程序支持最好的開源項目。
 安裝過程非常簡單,完成後需要〔Activate a user〕,〔開始〕-〔程序〕-〔CopSSH〕
請注意:CopSSH要求必須使用Windows帳戶,CVSNT帳戶不被支持。可以通過綁定Windows與CVSNT帳戶的方法來解決。
 需要從CVSNT安裝文件夾中拷貝以下文件到CopSSH安裝目錄的bin下
cvs.exe
cvsapi.dll
dbghelp.dll
extnt.dll
msvcp71.dll
msvcr71.dll
cvstools.dll
iconv.dll
mdnsclient.dll
 請設置CopSSH臨時文件夾的權限

Directory/File SYSTEM Administrators CVSAdmins
CVSAdmin-XXX CVSUsers 描述
./Documents and Settings /SvcCOPSSH.XXX/Local Settings/Temp Full Full Full Full

 連接測試

Set CVSROOT=:ssh:username@host:/Repo1
Cvs login
輸入密碼後,會要求確認接受public key。
1.3 刪除不安全CVS通訊協議(可選)
將位於CVSNT安裝文件夾中protocols目錄中的相應DLL文件刪除即可。

2 客戶端的安裝過程
安裝前注意事項:
 已經安裝Microsoft VS系列
 TamTam Plugin是付費軟件

客戶端的安裝相對簡單,這裏只介紹其中需要注意的幾點:
 安裝時請首先安裝CVSNT客戶端。
 TamTam Plugin 捆綁的文本比較工具不支持多字節字符(中文、日文等等),請使用WinMerge,並在設置中對其進行綁定。
 請指定TamTam Plugin所使用的CVS.EXE爲CVSNT中的以保持穩定的兼容性。
 爲了加快網絡傳輸速度請開啓網絡壓縮選項
 在填寫連接字串時,請使用SSH通訊協議,例如::ssh:username@host:/Repo1

3 CVSNT的日常維護
3.1 容器的備份
通過一個腳本文件(加入〔任務計劃〕)或者〔備份〕程序進行備份,其中內容形如:
net stop cvsnt
xcopy d:/CVSNTRepositories //server/cvsbackup /Q /S /C /H /R /O /Y
net start cvsnt

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章