到這里我們就配置完了cvs的啟動所需要的文件,但是要使cvs正常運行還需要對需要使用cvs的用戶進行設置,下面是我在配置cvs是使用的方法。首先建立一個用戶組cvs,可以使用groupadd或者addgroup命名,也可以直接編輯/etc/group文件添加這個組,然后添加一個用戶cvsroot, 然后修改/etc/passwd文件使cvsroot用戶的缺省組是cvs組,而不是cvsroot組。建立/cvsroot目錄,然后修改/cvsroot的屬主及屬
性:
#chown cvsroot.cvs /cvsroot
#chmod 755 /cvsroot
(原文這里是771,但是我們要配置cvsweb.cgi,下面再談)。
對cvs進行初始化:cvs -d /cvsroot init
這樣cvs服務器就可以使用了,用cvs -d :pserver:cvsroot@host:/cvsroot login登陸,輸入cvsroot用戶在服務器上的口令,沒有出現錯誤提示就表示成功了。
下面講述Windows下客戶端的配置,我只會用wincvs,覺得很不錯,不用記那些繁瑣對命令:)可以從http://www.cvshome.org找到相應的下載地址,在linuxforum也有下載,3M多一點。啟動wincvs在Admin菜單中選擇preferences然后在global頁中設置CVSROOT,就是:pserver:cvsroot@host:/cvsroot。在認證方式中選擇passwd file on the cvs server, 在下面的版本號中選擇合適的版本,執行Admin菜單中的login,在提示框輸入口令,如果Output窗口出現以下提示:
*****CVS exited normally with code 0*****
就表示我們現在可以在Windows下使用cvs服務了。我開始不知道成功了,還滿大街的問wincvs怎么了:(
英文好就看wincvs自帶的幫助文擋,我也推薦兩個文檔:)
wincvs.pdf winhtml.zip
特別是這個pdf文檔確實不錯,還是中文的:)
如果你想在網頁里給大家顯示你的項目,那么cvsweb是一個不錯的選擇。這是一個perl程序,可以到以下地址找到最新版:
http://stud.fh-heilbronn.de/~zeller/cgi/cvsweb.cgi
現在的版本是1.93,記得要用新版,1.8以下有一個小小的漏洞,可以到綠盟查一查。
由于是cgi程序,是以nobody用戶執行的,所以/cvsroot的屬性要設成775。開始我按章照搬,把屬性改成771,結果項目的目錄就是不出來,埋葬了半天的青春:(還有記得把/cvsroot/CVSROOT/history的屬性改成666。cvsweb.conf里%CVSROOT數組的Configuration設成/cvsroot,就是cvs倉庫的路徑不要那個長長CVSROOT變量。這些其實在它的說明文檔和程序注釋里都講到了,只是這個世界是懶人的世界:)
一切都陽春白雪,可以埋頭寫程序了?只是cvs還有一個小小的DoS漏洞要跟大家說一下:(每個cvs的操作過程會以操作用戶的身份在/tmp下臨時建一個鎖定了的目錄cvs_servPID,這時如果有人建了大量的同類文件就會使cvs的操作出錯,會提示:
cannot change permissions on temporary directory
Operation not permitted
下面是測試的perl程序:
#!/usr/bin/perl
#$min和$max的值根據實際情況修改
$min=400;
$max=4000;
for ($x=$min;$x<=$max;$x++) {
open CVSTMP, ">>/tmp/cvs-serv$x" or die "/tmp/cvs-serv$x: $!";
chmod 0600, "/tmp/cvs-serv$x";
close CVSTMP;
}
解決方法:
使用server.c中的mktemp(3)函數或者其它任何可以產生唯一文件名的方法。在/tmp/目錄所在的分區使用空間配額也能解決部分問題。 主要還是扎緊籬笆,莫讓別人闖進來,這畢竟是一個local的問題。
文章來源于領測軟件測試網 http://www.kjueaiud.com/