今天無聊,本機(jī)上試驗(yàn)架設(shè)了下CVSNT.基本搞懂CVSNT的架設(shè)配置.
???1.安裝CVSNT服務(wù)端(2.6版的安裝無法啟動控制面板,報編譯錯誤,后來換成2.5版的OK了.
?原因未知,操作系統(tǒng)windows 2003)
???2.對建立倉庫,并且對CVSROOT系統(tǒng)目錄進(jìn)行配置.主要是用戶權(quán)限.主要文件包括(config,admin,readers,writers,password)
?? 3.Eclipse的CVS配置,或者用wincvs(公司用這個東東,一條小fish在蹦啊蹦的)
???可惜我是內(nèi)網(wǎng)代理上網(wǎng),只好先在本機(jī)測試下了,改天搬到公網(wǎng)上再測試下,以后我也有自己的版本控制拉.,呵呵.
????假設(shè)已經(jīng)安裝了WINCVS和CVSNT,并建立了倉庫。完成了登陸和導(dǎo)入導(dǎo)出的操作。
(1)管理員登陸以后把服務(wù)器中倉庫的CVSROOT目錄(Module)導(dǎo)出(Checkout)到一個工作目錄,比如“admin”。具體操作見“導(dǎo)出模塊”。
CVS中目錄權(quán)限介紹:
系統(tǒng)支持的目錄權(quán)限如下:
r?????? (讀取權(quán)限)
w?????? (寫入權(quán)限)
c?????? (創(chuàng)建和刪除權(quán)限)
n?????? (沒有任何權(quán)限)
默認(rèn)情況下,任何用戶都擁有任何目錄的所有權(quán)限。
任何情況下只有目錄的擁有者和管理員才有權(quán)力更改目錄的使用權(quán)限。下面將會介紹如何修改目錄權(quán)限和目錄的擁有者。
(2)對CVSROOT目錄的管理:
CVSROOT目錄是在創(chuàng)建倉庫時有NTCVS建立的。里面包含了許多關(guān)于倉庫的信息的文件。
認(rèn)證口令的時候,服務(wù)器先檢查 CVSROOT/passwd 文件中的用戶。如果找到用戶,就按CVS內(nèi)置的權(quán)限管理方法進(jìn)行認(rèn)證。如果沒有找到,或passwd 文件不存在,服務(wù)器將采用操作系統(tǒng)的用戶認(rèn)證機(jī)制。為安全起見,應(yīng)該采用CVS內(nèi)置的權(quán)限管理。具體方法如下:
???? 1)
在服務(wù)端 CVSROOT 目錄下建立文件passwd(不建立則在添加用戶時自動創(chuàng)建)。出于安全考慮,默認(rèn)不會將 passwd列在 checkoutlist 文件里面。既從客戶端導(dǎo)出CVSROOT時不會導(dǎo)出該文件。在WINCVS中轉(zhuǎn)到CVSROOT目錄。點(diǎn)擊主菜單“Admin->command line”或”ctrl+ L”彈出命令行對話框。在對話框中輸入增加管理員的命令:
cvs passwd -a -r systemuser username
????????? //建立與系統(tǒng)用戶systemuser有相同權(quán)限的用戶,用戶名為username。?
????????? //當(dāng)某個用戶綁定的系統(tǒng)用戶被刪除時,則這個用戶也不能登陸。
或? cvs passwd -a? username????????
??? ????????? //建立用戶名為username的用戶
在兩次彈出的對話框輸入密碼。確認(rèn)即可。這時可以看到passwd文件多了一行
:
username:CUXQwLMdoZHNs:systemuser????
或???? username:CUXQwLMdoZHNs
在增加管理員時,應(yīng)該使用第一種方法:命令為:
cvs passwd -a -r Administrator username
在實(shí)際操作中建議使用第一種命令。采用第二種命令增加的用戶有時在login時會出現(xiàn)不能登陸的情況(具體原因還不清楚)。
2)修改CVSROOT下的配置文件 config,加入一行:“?SystemAuth=no”其中no表示用passwd檢查用戶密碼權(quán)限是否正確。yes 為默認(rèn)值,表示如果用戶在passwd文件中不存在,就用系統(tǒng)用戶檢查權(quán)限是否正確,這就使用了CVS內(nèi)置的權(quán)限管理功能了。???????????
然后在CVSROOT下建立admin文件。這個文件是指定CVSNT的管理員列表的文件,CVSNT根據(jù)這個文件來判斷一個用戶是否是管理員。文件的內(nèi)容是一個用戶列表。如下:
user1
user2
user3
這些代表user1,user2,user3都是管理員,在此之前CVS將服務(wù)器的管理員用戶作為自己的管理員用戶的。
3)在CVSROOT下加入文件readers,writers來控制用戶的讀寫權(quán)限。文件每行內(nèi)容與admin文件相同。格式為:?用戶名回車。
特別注意的是:只有在writer文件中的用戶既能讀取,又能進(jìn)行提交修改。在readers中的用戶只能讀取,同時在兩個文件中的用戶只能讀取。在writers文件中必須有管理員的用戶名。因?yàn)楣芾韱T在操作控制時將會涉及到文件的讀寫。對于一般用戶就不要寫進(jìn)這兩個文件了。
這樣就完成了對CVSROOT目錄的權(quán)限設(shè)定。不在readers和writers文件中的用戶將不能導(dǎo)出CVSROOT這個module。僅在readers文件中的用戶能進(jìn)行導(dǎo)出操作但不能進(jìn)行提交修改操作。僅在writers文件中的用戶能進(jìn)行導(dǎo)出和提交修改操作。
下面講一下不使用系統(tǒng)管理員而自己建立的管理員的步驟:
1.
?????????????
使用
命令
cvs passwd -a -r Administrator username建立一個和Administrator有相同權(quán)限的管理員用戶。
2.
?????????????
在admin文件中添加該管理員的用戶名。
3.
?????????????
在writers文件中添加該管理員的用戶名。
4.
?????????????
在config 文件中添加一行代碼:SystemAuth=no,這樣就不能使用Administrator而只能使用自己建立的管理員進(jìn)行操作了。
?
(3)對一般目錄權(quán)限的設(shè)置
1)
?
配置CVS庫模塊文件modules
先從客戶端導(dǎo)入兩個module。比如test和localdir。在modules加入如下3行:
?????CVSROOT????????? ??CVSROOT?
?????目錄1?? ?-a?????? localdir?
?????目錄2??? -a?????? test
第一列為描述信息,第二列為參數(shù)或空格。第三列為相對路徑。如果描述信息和相對路徑不同則需要參數(shù)“-a”。
在導(dǎo)出模塊的時候(remote->checkout module),可以點(diǎn)擊module name and path on the server一欄旁邊的“...” 按鈕彈出窗口:
??? 這樣可以使客戶端更加方便的進(jìn)行module選擇。
?
2)
?
為各個module進(jìn)行權(quán)限配置
module在倉庫的下就是一個獨(dú)立的目錄。為module設(shè)置權(quán)限有兩種方法。第一種是手工配置,在module目錄下有一個子目錄CVS,在里面有一個fileattr.xml文件。在未設(shè)置以前打開文件如下:
<?xml version="1.0" encoding="UTF-8"?>
<fileattr>
? <directory>
??? <owner>Administrator</owner>
? </directory>
</fileattr>
在<owner></owner>之間設(shè)置目錄的所有者。
目錄的擁有者和管理員才有權(quán)力更改目錄的使用權(quán)限
。目錄權(quán)限未設(shè)置時,所有用戶對目錄有除了更改目錄權(quán)限以外的全部權(quán)限。在<directory></directory>之間加入以下代碼表示取消所有用戶對目錄的的默認(rèn)全部權(quán)限。
<acl>
????? <all deny="1" />
??? </acl>
在<directory></directory>之間加入以下代碼表示用戶user具有創(chuàng)建、讀寫、注釋的權(quán)限。目錄的所有者也要通過以下代碼進(jìn)行權(quán)限設(shè)置。
??????? <acl user="user">
????????? <create />
????????? <read />
????????? <tag />
????????? <write />
??????? </acl>
加入以上代碼以后文件如下:
<?xml version="1.0" encoding="UTF-8"?>
<fileattr>
? <directory>
<acl>
?????
????<all deny="1" />
</acl>
??? <acl user="user">
????????? <create />
????????? <read />
????????? <write />
????????? <tag />
??????? </acl>
??? <owner>user</owner>
? </directory>
</fileattr>
第二種方法是使用命令來設(shè)置,其實(shí)也是通過命令來修改fileattr.xml文件來進(jìn)行權(quán)限設(shè)置。具體方法是在WINCVS中用管理員身份登陸并導(dǎo)出要設(shè)置的module。選中module,在文件信息欄顯示module的文件信息。打開命令行對話框輸入以下命令來設(shè)置。
命令格式:
cvs chacl [-R] [-r branch] [-u user] [-j branch] [-n] [-p priority] [-m message] [-a [no]{read|write|create|tag|control|all|none}[,...]] [-d] [file or directory...]
??? -a access??? Set access(設(shè)置權(quán)限)
??? -d??????? Delete ACL(刪除目錄的控制權(quán)限)
??? -j branch??? Apply when merging from branch(合并分支時應(yīng)用)
??? -m message??? Custom error message(定制錯誤消息)
??? -n??????? Do not inherit ACL
??? -p priority??? Override ACL priority(不受目錄權(quán)限管理)
??? -r branch??? Apply to single branch(在單個分支上應(yīng)用)
??? -R??????? Recursively change subdirectories(
嵌套設(shè)置權(quán)限,對目錄下每個子目錄也進(jìn)行相同的目錄權(quán)限設(shè)置)
??? -u user??????? Apply to single user(應(yīng)用在單個用戶)
例如? cvs chacl -r –a none //取消所有用戶的默認(rèn)權(quán)限,禁止一切訪問。
cvs chacl -R -u user -a read??? //設(shè)置用戶user有讀的權(quán)限。
通過下面的代碼更改目錄所有者:
cvs chown dirowner //dirowner為要設(shè)定的管理員??????
通過下面的代碼顯示目錄的信息:
cvs lsacl
這兩種方法中,第二種方法比較簡單,不容易出錯。但在第二種方法沒有效果的時候可以用第一種方法進(jìn)行設(shè)置。第一種方法中的命令和以前的版本略有不同。具體見它的格式。
??? 以上就可以完成對目錄的權(quán)限設(shè)置。在模塊(module)下的每一個目錄下都會自動產(chǎn)生一個名為CVS的文件夾,里面都有一個fileattr.xml文件用來控制目錄的訪問權(quán)限。方法同上。
?
(3)關(guān)于分組(group)的應(yīng)用
分組:將權(quán)限相同的用戶劃分到一組,這樣可以方便維護(hù)。就是角色的意思,分組使用在對模塊訪問權(quán)限的劃分的方法如下:
a.在服務(wù)器端 CVSROOT目錄下新建文件 group。
b.在文件中建立分組,group文件內(nèi)容如下:
group1:user1 user2 user3
group2:user5 user6 user7
c.之后對組進(jìn)行權(quán)限劃分,和對單個用戶方式一樣,就可以使組內(nèi)用戶和組具有相
同的權(quán)限,如 選中模塊,執(zhí)行如下命令可以使用戶 user1 user2 user3 同時具有對該模塊的讀權(quán)限了。
? cvs chacl -R -u group1 -a write
在fileattr.xml文件中加入如下代碼也可以使用戶 user1 user2 user3 同時具有對該模塊的讀寫:
<acl user=guoup1>
????????? <create />
????????? <read />
?
????????<tag />
????????? <write />
??????? </acl>
注意這里的group不用" " 。