CVS服務器的安裝與設置相關文檔網上已經很多了,但是對於如何管理CVS服務器技巧方面的文檔很少。 我就曾經遇到這樣的情況:需要多個庫,共享一台CVS服務器,需求是各個庫CVS權限分開,不可以互相訪問。這樣就出現了交叉權限。權限怎麼分配呢?這篇文檔我主要想說明通過CVS多倉庫(多cvsroot)來實現權限的分離與交叉。 這是一篇整理而來的文檔,非常實用,我曾經建立過很多個CVS,按照如下操作很容易就能建立,而且能夠達到你所要求的--希望對大家有所幫助,裡面也有我的一些技巧經驗,很實際 一 CVS服務器的安裝: 1、查看你的操作系統上是否安裝了CVS: #> rpm -qagrep cvs 如果沒有安裝你可以在Redhat 第2張光盤上找到,另外你也可以在網上下載到最新的rpm包。很容易找,其實不存在什麼Linux版本。 2、建立cvs用戶組: #> groupadd cvs 3、建立cvs組的cvsroot用戶和所屬的目錄: #> useradd -g cvs -G cvs –d /cvsroot cvsroot 4、為cvsroot用戶添加密碼: #> passwd cvsroot 5、改變 /cvsroot/ 的目錄屬性: #> chmod –R 770 /cvsroot 6、改變用戶登陸身份: #> su cvsroot 7、開始創建單個項目: #> cd /cvsroot #> mkdir project1 #>mkdir project2 8、開始建立倉庫: #> cvs –d /cvsroot/project1 init #> cvs –d /cvsroot/project2 init #> chmod –R 770 ./project1/ ./project2/ 9、建立CVS服務啟動文件,我們使用xinetd方式: #> [Crtl]+[d] 切換到root用戶身份 #> cd /etc/xinetd.d #> vi cvspserver service cvspserver { disable = no flags = REUSE socket_type = stream wait = no user = root server= /usr/bin/cvs server_args= -f --allow-root=/home2/cvsroot/project1 --allow-root=/home2/cvsroot/project2 pserver log_on_failure += USERID } 注:由於xinetd的server_args長度限制,當你想運行很多的單個倉庫的時候,可以這麼做: #> vi cvspserver service cvspserver { disable = no flags = REUSE socket_type = stream wait = no user = root server = /cvsroot/cvs.run log_on_failure += USERID } 編寫cvs.run腳本 #> vi /cvsroot/cvs.run #!/bin/bash /usr/bin/cvs -f --allow-root=/cvsroot/project1 --allow-root=/cvsroot/project2 pserver #>chmod +x /cvsroot/cvs.run 10、加入cvs服務: #>vi /etc/services cvspserver 2401/tcp #pserver cvs service cvspserver 2401/udp #pserver cvs service 11、啟動cvs服務: #> /etc/init.d/xinetd restart 12、檢查cvspserver服務是否已經啟動: #> netstat -l grep cvspserver 應該有如下結果: tcp 0 0 *:cvspserver *:* LISTEN
二、CVS服務的用戶管理: 上面我們已經建立了project1和project2兩個CVS倉庫,下面我們分別給兩個倉庫建立cvs用戶。 13、創建可以登陸cvs服務器的用戶名和密碼: #> su cvsroot #> vi /cvsroot/project1/CVSROOT/passwd trotter:*****:cvsroot mimi:*****:cvsroot #>vi /cvsroot/project2/CVSROOT/passwd trotter:*****:cvsroot gary:*****:cvsroot 這兩個文件的意思是有trotter,mimi,gary三個cvs用戶,mimi擁有project1的使用權限,gary擁有project2的使用權限,trotter擁有project1和project2的使用權限。登陸後的權限是cvsroot權限。 注意:這裡的cvs用戶和系統用戶是不同的。 14、*****為密碼,由以下文件生成: #> vi /cvsroot/passwd.pl #!/usr/bin/perl srand (time()); my $randletter = "(int (rand (26)) + (int (rand (1) + .5) % 2 ? 65 : 97))"; my $salt = sprintf ("%c%c", eval $randletter, eval $randletter); my $plaintext = shift; my $crypttext = crypt ($plaintext, $salt); print "${crypttext} "; #>chmod a+x /cvsroot/passwd.pl 15、如果你想生成一個密碼是“123456”,則: #> /cvsroot/passwd.pl “123456” 回車即可得到加密密碼,用其替換passwd文件中的***** 16、Ok,cvs現在已經全部安裝完成了,如果你想讓一個用戶擁有project1的權限,你就在 /cvsroot/project1/CVSROOT/passwd中給他加入一個用戶;如果你想讓一個用戶同時具有project1和project2 的權限,你就給/cvsroot/project1/CVSROOT/passwd和/cvsroot/project2/CVSROOT/passwd 裡給他加一個用戶名和密碼相同的用戶即可。最後,我們試用一下: #> cvs -d :pserver:電子郵件地址已被防垃圾郵件功能所隱藏, 您需要把javascript功能打開才能看到。:/cvsroot/project1 login 敲入命令回車後提示輸入trotter的密碼,你按照自己設置的密碼輸入,如果沒有什麼錯誤信息出現就是成功了(我的機器IP地址是192.168.1.200)