所有這些操作基于的環(huán)境和軟件版本:WINDOWS2000 Pro、CVSNT2.0.4、WinCVS1.3.9.1Beta9 在前面的介紹CVSNT配合WinCVS進(jìn)行用戶(hù)管理的文章中,已經(jīng)對(duì)CVSNT的用戶(hù)管理,權(quán)限分配進(jìn)行了比較詳細(xì)的敘述,但是還有一些概念沒(méi)有交待清楚,在這里,我會(huì)根據(jù)項(xiàng)目的實(shí)際需要,以及自己的一些經(jīng)驗(yàn)給出一套用戶(hù)管理、權(quán)限管理方案,在看這篇文章之前你好已經(jīng)閱讀了前面的一篇文章,對(duì)用戶(hù)的增加刪除,權(quán)限的修改,等等這些操作能夠了解,否則,會(huì)有一點(diǎn)困難。
1、 CVSNT的用戶(hù)驗(yàn)證方式
我們這里所討論的是工作在pserver方式下。
在CVSNT的文檔中給出了兩種驗(yàn)證方式,我總結(jié)了一下,可以這樣稱(chēng)呼:Window和CVSNT混合驗(yàn)證方式,CVSNT獨(dú)立驗(yàn)證方式。在前面的文章中,我們沒(méi)有詳細(xì)的給出這兩種方式的內(nèi)容,所講述的啟示是混合驗(yàn)證方式。
決定CVSNT工作于何種驗(yàn)證方式是由CVS的管理文件來(lái)決定的,這些管理文件處在庫(kù)的目錄下的CVSROOT目錄中,這里可以得出結(jié)論,對(duì)于不同的庫(kù),可以給不同的驗(yàn)證方式。所以,在每個(gè)庫(kù)建立的時(shí)候要首先設(shè)定好這些前提。
下面的操作如果沒(méi)有特殊指出則都是在客戶(hù)端來(lái)進(jìn)行管理的,下面首先是對(duì)一些控制原理和相關(guān)的文件做一些說(shuō)明,如果你正在進(jìn)行相關(guān)的模擬操作,請(qǐng)停下來(lái)暫時(shí)停止你的操作,因?yàn)檫@些操作的步驟是有先后的,如果你順序不對(duì),那么你可能權(quán)限失效,進(jìn)行不了下面的操作了。
1.1 config文件
在庫(kù)建立好了以后,你還沒(méi)有對(duì)控制文件進(jìn)行修改之前,CVSNT是工作在混合驗(yàn)證方式之下的,這個(gè)時(shí)候,CVS服務(wù)器的管理員是CVSNT的管理員,你以一個(gè)管理員身份登陸,檢出你要操作的庫(kù)的CVSROOT模塊,看一下文件列表,控制CVSNT的驗(yàn)證工作方式的是config文件,你可以在文件列表中找到它,雙擊看看其中的內(nèi)容,這里對(duì)我們重要的是第一個(gè)設(shè)置內(nèi)容,你會(huì)看到下面的內(nèi)容:
# Set this to `no' if pserver shouldn't check system users/passwords
#SystemAuth=yes
第二行是我們要修改的內(nèi)容,默認(rèn)狀態(tài)是被注釋掉的,SystemAuth有兩個(gè)值yes和no
yes:pserver將使用系統(tǒng)用戶(hù)數(shù)據(jù)庫(kù)和passwd文件(這個(gè)文件后面會(huì)詳細(xì)講述)來(lái)共同驗(yàn)證(若passwd文件不存在或者文件中沒(méi)有相應(yīng)的資料,則用系統(tǒng)用戶(hù)來(lái)進(jìn)行驗(yàn)證)默認(rèn)為yes
no:所有的用戶(hù)必須在passwd中存在,根據(jù)passwd的內(nèi)容來(lái)進(jìn)行用戶(hù)的驗(yàn)證。
我這里所闡述的方案是工作在no的下面的,修改完之后提交到服務(wù)器,提交完畢服務(wù)器處在CVSNT的獨(dú)立驗(yàn)證模式下了。在這個(gè)工作方式下,NT本地的用戶(hù)和CVSNT用戶(hù)沒(méi)有任何本質(zhì)的聯(lián)系和影響(僅僅是要建立一個(gè)別名)。
1.2 passwd文件
在講述上面的時(shí)候提到了這個(gè)文件,在服務(wù)器工作在CVSNT驗(yàn)證模式下的時(shí)候,這個(gè)文件可以稱(chēng)之為CVSNT的用戶(hù)數(shù)據(jù)庫(kù),這個(gè)里面存儲(chǔ)著用戶(hù)列表,用戶(hù)的密碼,以及別名的一些信息。默認(rèn)狀態(tài)下這個(gè)文件是不存在的,所以,如果我們要在CVSNT驗(yàn)證模式下工作,必須建立這個(gè)文件。注意:這個(gè)文件是不能夠在客戶(hù)端進(jìn)行修改的。這個(gè)文件的內(nèi)容是相當(dāng)簡(jiǎn)單的,像下面:
bach:ULtgRLXo7NRxs
spwang:1sOp854gDF3DY
melissa:tGX1fS8sun6rY:pubcvs
qproj:XR4EZcEs0szik:pubcvs
這里分別拿第一個(gè)用戶(hù)bach和第三個(gè)用戶(hù)melissa來(lái)進(jìn)行說(shuō)明,每一行代表一個(gè)用戶(hù),總共有三部分信息,用戶(hù)名、密碼、本地用戶(hù)三部分之間使用冒號(hào)“:”來(lái)進(jìn)行分割。
用戶(hù)名:是登陸CVS的用戶(hù)名
密 碼:用戶(hù)的密碼,這里是經(jīng)過(guò)加密的,如果為空,那么是空密碼
本地用戶(hù):CVS用戶(hù)這個(gè)別名對(duì)應(yīng)的本地用戶(hù),(跟本地用戶(hù)沒(méi)有任何其他關(guān)系,僅僅是別名的關(guān)系)
如果在本地系統(tǒng)中存在一個(gè)用戶(hù)名bash,那么要在CVS建立一個(gè)bach這樣的用戶(hù)不需要在后面指出對(duì)應(yīng)的系統(tǒng)用戶(hù),melissa后面的pubcvs是系統(tǒng)用戶(hù),在本地系統(tǒng)上面存在的用戶(hù)。對(duì)于要用命令增加這兩種用戶(hù)的格式如下:
cvs passwd –a bach
cvs passwd –r pubcvs –a melissa
在庫(kù)建立的時(shí)候可以在服務(wù)器上建立一個(gè)簡(jiǎn)單的passwd初始化文件,加一行
cvsadmin:
這樣,給出了一個(gè)cvsadmin這個(gè)空密碼用戶(hù)(本地系統(tǒng)中有這樣的用戶(hù),可以不加到后面去),然后在客戶(hù)端來(lái)進(jìn)行修改和以后的用戶(hù)增加工作。注意:在客戶(hù)端進(jìn)行其他之前請(qǐng)先首先修改這個(gè)密碼,以防止別人進(jìn)行破壞。
在服務(wù)器端建立了這個(gè)文件以后,不用再手動(dòng)進(jìn)行修改了,當(dāng)你在客戶(hù)端進(jìn)行密碼或者用戶(hù)的增加刪除的時(shí)候,系統(tǒng)會(huì)自動(dòng)進(jìn)行這個(gè)文件的更新。這個(gè)文件是管理著CVSNT系統(tǒng)中的所有的用戶(hù),所以,要特別重視,不了解這個(gè)文件格式的,不要去隨便修改,更加不要嘗試在客戶(hù)端進(jìn)行修改!
1.3 admin文件
這個(gè)文件是指定CVSNT的管理員列表的文件,CVSNT會(huì)根據(jù)這個(gè)文件中的內(nèi)容來(lái)判斷一個(gè)用戶(hù)是否是管理員。這個(gè)文件的內(nèi)容很簡(jiǎn)單,是一個(gè)用戶(hù)列表。類(lèi)似下面
user1
user2
user3
這些代表user1,user2,user3都是管理員,當(dāng)然,這些用戶(hù)必須要存在才能夠正確登陸系統(tǒng)來(lái)執(zhí)行管理。
這個(gè)文件默認(rèn)狀態(tài)下是沒(méi)有的,但是,可以在客戶(hù)端進(jìn)行添加,在你的客戶(hù)端進(jìn)行新建這個(gè)文件然后add上去再commit一下,這個(gè)文件可以上傳到服務(wù)器,但是這個(gè)時(shí)候還沒(méi)有生效,請(qǐng)修改checkoutlist這個(gè)文件,加入admin這一行,checkoutlist也可以在客戶(hù)端進(jìn)行修改再提交,這個(gè)時(shí)候admin可以被系統(tǒng)自動(dòng)的build了。
Checkoutlist是維護(hù)的一個(gè)文件列表,可以放入系統(tǒng)自動(dòng)build的用戶(hù)自定義的系統(tǒng)文件列表,注意:對(duì)passwd沒(méi)有用!
1.4 group文件
這個(gè)文件是定義系統(tǒng)的組,我們可以將同樣性質(zhì)的用戶(hù)歸入一個(gè)組,然后用給用戶(hù)賦權(quán)限的方式給組賦權(quán)限,這樣,一個(gè)組的用戶(hù)會(huì)具有同樣的權(quán)限。Group的內(nèi)容如下:
group1:user1 user2 user3
group2:me you he
group3:tom honey
有上面可以看出來(lái),這個(gè)文件的內(nèi)容也是相當(dāng)?shù)暮?jiǎn)單,首先是組的名稱(chēng)然后是冒號(hào),接著是用戶(hù)名,多個(gè)用戶(hù)名之間用空格來(lái)進(jìn)行分割。
Group文件可以在客戶(hù)端進(jìn)行新建和修改,不用修改checkoutlist這個(gè)文件,系統(tǒng)會(huì)自動(dòng)build這個(gè)文件并且使之生效。
作為組里面的特定成員還可以賦給特定的權(quán)限,權(quán)限分為兩類(lèi)c,w,r和n,否定權(quán)限是有高的優(yōu)先級(jí)的。
好,上面已經(jīng)介紹了本方案所涉及到的幾個(gè)重要的文件以及修改方式。這里再?gòu)?qiáng)調(diào)一下,passwd只能夠再服務(wù)器端進(jìn)行建立和修改,不能夠在客戶(hù)端進(jìn)行操作!
現(xiàn)在根據(jù)上面介紹的內(nèi)容,可以開(kāi)始你的操作了,下面給出修改順序,庫(kù)剛剛建立起來(lái)的時(shí)候,使用一個(gè)服務(wù)器上的本地管理員用戶(hù)進(jìn)行登陸檢出CVSROOT模塊。
1、 現(xiàn)在服務(wù)器端加上passwd文件,給一個(gè)初始的用戶(hù),比如cvsadmin:
2、 在客戶(hù)端增加admin,將cvsadmin加入admin文件,作為出是管理員,并提交加入到庫(kù)中。
3、 在修改checkoutlist文件,加入admin,使其能夠自動(dòng)build。
4、 后修改config文件的SystemAuth=no,在提交之前要確認(rèn)一下你上面的修改是否正確,如果提交了這個(gè)文件,CVSNT驗(yàn)證模式開(kāi)始生效了!
5、 好,現(xiàn)在請(qǐng)修改你的參數(shù)再重新進(jìn)行的登陸吧。因?yàn)槟愕南到y(tǒng)已經(jīng)切換了工作模式,你當(dāng)前的用戶(hù)已經(jīng)失效了。
完成了上面的步驟,整個(gè)服務(wù)器會(huì)有效的工作在CVSNT驗(yàn)證模式下了。而group文件在你需要的任何時(shí)候可以加入。
在上面的文章關(guān)于CVSNT的用戶(hù)的管理方案的,在這里做一點(diǎn)補(bǔ)充,在后面的操作中全部是針對(duì)在客戶(hù)端使用WinCVS來(lái)進(jìn)行的(出了增加passwd)文件,其實(shí),在我的實(shí)踐當(dāng)中config,passwd,admin,checkoutlist,這些文件的起始修改(初始化)都可以在新建了庫(kù)以后一起完成,然后再讓相應(yīng)的庫(kù)的管理員來(lái)進(jìn)行相關(guān)的操作。