posts - 22,comments - 35,trackbacks - 0

          [網(wǎng)上摘錄,不知道誰是真正的作者]
          我的現(xiàn)在情況.
          服務(wù)器:紅帽子企業(yè)4(上已經(jīng)安裝了oracle)
          cvs為:cvsnt-2.5.03.2151-rh9-rpm.tar.gz ,在http://www.march-hare.com/cvspro/,下載的是最新的

          版本

          我的安裝過程:
          確認是否安裝了老版本的cvs,如果有老版本的,就統(tǒng)統(tǒng)刪除
          [root@redhat /]# rpm -qa |grep cvs
          libbonoboui-2.8.0.99cvs20040929-2
          cvs-1.11.17-7.RHEL4
          [root@redhat /]# rpm -e cvs-1.11.17-7.RHEL4
          [root@redhat /]# rpm -qa | grep cvs
          libbonoboui-2.8.0.99cvs20040929-2

          將下載的cvs文件解壓
          [root@redhat cvs]# tar zxvf cvsnt-2.5.03.2151-rh9-rpm.tar.gz
          cvsnt-2.5.03.2151-1.i386.rpm
          cvsnt-database-mysql-2.5.03.2151-1.i386.rpm
          cvsnt-database-odbc-2.5.03.2151-1.i386.rpm
          cvsnt-database-sqlite-2.5.03.2151-1.i386.rpm
          cvsnt-protocol-gserver-2.5.03.2151-1.i386.rpm
          cvsnt-protocol-sserver-2.5.03.2151-1.i386.rpm
          [root@redhat cvs]# ls
          cvsnt-2.5.03.2151-1.i386.rpm cvsnt-database-sqlite-2.5.03.2151-1.i386.rpm
          cvsnt-2.5.03.2151-rh9-rpm.tar.gz cvsnt-protocol-gserver-2.5.03.2151-1.i386.rpm
          cvsnt-database-mysql-2.5.03.2151-1.i386.rpm cvsnt-protocol-sserver-2.5.03.2151-1.i386.rpm
          cvsnt-database-odbc-2.5.03.2151-1.i386.rpm

          安裝相關(guān)的rpm包(之后立刻確認安裝)
          [root@redhat cvs]# rpm -ivh cvsnt-2.5.03.2151-1.i386.rpm
          Preparing... ########################################### [100%]
          ?? 1:cvsnt ########################################### [100%]
          [root@redhat cvs]# rpm -qa |grep cvs
          libbonoboui-2.8.0.99cvs20040929-2
          cvsnt-2.5.03.2151-1

          [root@redhat src]# cvs -version

          Concurrent Versions System (CVSNT) 2.5.03 (Scorpio) Build 2151 (client/server)

          建立cvs用戶組
          [root@redhat /]# groupadd cvs
          以上建立組的語句,不會在/home中多出任何目錄來.

          建立以后的存放目錄
          [root@redhat /]# mkdir cvs
          [root@redhat /]# cd cvs
          [root@redhat cvs]# mkdir src
          [root@redhat cvs]# cd src
          [root@redhat src]# pwd
          /cvs/src
          [root@redhat src]#

          指定cvs組的cvsroot用戶和所屬的目錄
          [root@redhat src]# useradd -g cvs -G cvs -d/cvs cvsroot

          為cvsroot用戶添加密碼
          [root@redhat cvs]# passwd cvsroot
          Changing password for user cvsroot.
          New UNIX password:
          BAD PASSWORD: it does not contain enough DIFFERENT characters
          Retype new UNIX password:
          passwd: all authentication tokens updated successfully.

          改變/cvs的目錄屬性
          [root@redhat /]# chmod 775 /cvs
          drwxrwxr-x 4 root root 4096 Dec 7 14:14 cvs
          [root@redhat cvs]# chmod 775 src
          drwxrwxr-x 2 root root 4096 Dec 7 14:06 src

          對cvs進行相關(guān)的版本確認
          [root@redhat /]# cvs version
          Concurrent Versions System (CVSNT) 2.5.03 (Scorpio) Build 2151 (client/server)

          啟動cvs服務(wù)器
          [root@redhat /]# more /etc/services|grep cvspserver
          cvspserver 2401/tcp # CVS client/server operations
          cvspserver 2401/udp # CVS client/server operations

          如果上面沒有這個內(nèi)容就
          [root@redhat /]# vi /etc/services
          來添加相關(guān)的內(nèi)容

          [root@redhat /]# vi /etc/xinetd.d/cvspserver
          service cvspserver
          {
          disable = no
          flags = REUSE
          port = 2401
          socket_type = stream
          protocol = tcp
          wait = no
          user = root
          passenv = PATH
          server = /usr/bin/cvs
          server_args = -f --allow-root=/cvs pserver
          log_on_failure += USERID
          }

          shift+wq!
          "/etc/xinetd.d/cvspserver" [New] 14L, 225C written
          [root@redhat src]# ls /etc/xinetd.d/cvspserver
          /etc/xinetd.d/cvspserver
          [root@redhat src]# su cvsroot
          [cvsroot@redhat src]$ pwd
          /cvs/src
          [root@redhat /]# service xinetd restart
          Stopping xinetd: [ OK ]
          Starting xinetd: [ OK ]
          [root@redhat /]# netstat -l |grep cvspserver
          tcp 0 0 *:cvspserver *:* LISTEN

          初始化cvs源碼庫,新建立一個Repository,此操作生成目錄/cvs/CVSROOT(或者/cvs/src/CVSROOT),其下

          為一些初始化文件
          [root@redhat src]# export CVSROOT=/cvs/src
          [root@redhat src]# env | grep CVSROOT
          CVSROOT=/cvs/src

          [root@redhat src]# cvs -d /cvs/src init

          在服務(wù)器端初置口令認證

          首先,你可能需要 $CVSROOT$CVSROOT/CVSROOT 上設(shè)定權(quán)限。見 Password authentication security

          在服務(wù)器端,需要編輯文件 /etc/inetd.confinetd 它在正確的端口上收到一個連接的時候運行 cvs pserver 命令。按照默認,端口號是 2401;當(dāng)然,如果客戶端用 CVS_AUTH_PORT 重新編譯了就會有一些不同。也可以在 CVSROOT 變量(參閱 Remote repositories)指定或用 CVS_CLIENT_PORT 環(huán)境變量(參閱 Environment variables)跨越。

          如果你的 inetd/etc/inetd.conf 中允許原始的端口號定義,那么下面的命令就足夠了(所有命令在 inetd.conf 中都是單行):

               2401  stream  tcp  nowait  root  /usr/local/bin/cvs
               cvs -f --allow-root=/usr/cvsroot pserver
          

          (你也可以使用 `-T' 選項來指定一個臨時目錄。)

          `--allow-root' 選項指定一個允許的 cvsroot 目錄。試圖使用一個另外的 cvsroot 目錄的客戶將被拒絕連接。如果你希望設(shè)置多個允許的 cvsroot 目錄,重復(fù)設(shè)置這一選項就行了。(不幸的是,許多版本的 inetd 對參數(shù)的數(shù)量和/或命令長度小有限制。通常解決方法是在 inetd 中運行一個 shell 腳本,然后在腳本中調(diào)用 cvs 所需的參數(shù)。)

          如果你希望 inetd 使用符號服務(wù)名稱來代替原始端口號,那么把它放進 /etc/services 里:

               cvspserver      2401/tcp
          

          并且在 inetd.conf 中使用 cvspserver 代替 2401

          如果你的系統(tǒng)用 xinetd 替代 inetd,步驟有些不同。創(chuàng)建一個叫 /etc/xinetd.d/cvspserver 的文件,包含下列內(nèi)容:

               service cvspserver
               {
                  port        = 2401
                  socket_type = stream
                  protocol    = tcp
                  wait        = no
                  user        = root
                  passenv     = PATH
                  server      = /usr/local/bin/cvs
                  server_args = -f --allow-root=/usr/cvsroot pserver
               }
          

          (如果已在 /etc/services 中定義 cvspserver,可以省略 port 這一行。)

          做了上面的修改之后,需要重新啟動你的 inetd,或者采取其它可以使它重新讀取初始化文件手段。

          如果設(shè)置這有麻煩,參閱 Connection。

          因為客戶端以明文存儲和傳輸口令(幾乎是—請見 Password authentication security),通常使用了一個獨立的 cvsCVS 口令文件,這樣人們訪問倉庫的時候不會危及定期口令的安全。這個文件是 $CVSROOT/CVSROOT/passwd (參閱 Intro administrative files)。除了只用較少的域(cvs 用戶名稱,可有可無的口令和服務(wù)器的用戶名稱)以外,它的格式和 Unix 上的 /etc/passwd 相似,采用分號分隔。這里是個有五個表項的例子 passwd 文件:

               anonymous:
               bach:ULtgRLXo7NRxs
               spwang:1sOp854gDF3DY
               melissa:tGX1fS8sun6rY:pubcvs
               qproj:XR4EZcEs0szik:pubcvs
          

          (口令使用 Unix 標(biāo)準(zhǔn)的 crypt() 函數(shù)加密,因此它可以直接從常規(guī) Unix /etc/passwd 文件粘貼過來。)

          例子中第一行允許任何 cvs 客戶機使用 anonymous 來訪問,口令可以用任意字符還可以用空口令。(這是一個站點允許匿名進行只讀訪問的典型用法;“只讀(read-only)”部分信息的做法,參看 Read-only access。)

          如果他們提供各自的明文口令第二、三行允許對 bachspwang 進行訪問。

          如果她提供正確的口令第四行允許對 melissa 訪問,但她的 cvs 操作將實際運行在服務(wù)器側(cè)的 pubcvs 用戶名下。雖然系統(tǒng)上不須有 melissa 用戶名,但 必須 使用 pubcvs。

          第五行顯示系統(tǒng)用戶標(biāo)識可以共享:作為 qproj 成功認證的任何客戶實際將按 pubcvs 來運行,和 melissa 所做的一樣。用這種方法你可以在你的倉庫中為每個項目創(chuàng)建一單個共享的系統(tǒng)用戶,并且在 $CVSROOT/CVSROOT/passwd 文件中為每個開發(fā)者設(shè)置一行。每行的 cvs 用戶名應(yīng)該不同,而系統(tǒng)用戶名應(yīng)該相同。用不同的 cvs 用戶名目的是在 cvs 將在其名字下記錄其動作: 當(dāng) melissa 提交了項目中的一個修改,檢入被紀錄在項目歷史中的 melissa 名下,而不是 pubcvs 下。而共享一個系統(tǒng)用戶的原因是可以安排倉庫中相關(guān)區(qū)域的權(quán)限,只有那個帳戶有寫權(quán)限。

          如果系統(tǒng)用戶域存在的時候,全部口令鑒定 cvs 命令按該用戶運行;如果沒有指定系統(tǒng)用戶,cvs 簡單地取 cvs 用戶名作為系統(tǒng)用戶名并且按此戶名運行命令。無論哪種情況,如果系統(tǒng)上沒有這樣的用戶,于是 cvs 操作會失敗(不管客戶機是否提供了正確的口令)。

          口令和系統(tǒng)用戶字段都可以省略(如果系統(tǒng)用戶字段省略,那么與口令分隔的冒號也省略)。例如,這將是有效的 $CVSROOT/CVSROOT/passwd 文件:

               anonymous::pubcvs
               fish:rKa5jzULzmhOo:kfogel
               sussman:1sOp854gDF3DY
          

          當(dāng)口令字段為空,客戶的認證可以用包括空字符串在內(nèi)的任何口令。但 cvs 用戶名后的分隔冒號必需存在,即使口令為空。

          cvs 還可借助于系統(tǒng)認證。認證口令的時候,服務(wù)器先檢查 $CVSROOT/CVSROOT/passwd 文件中的用戶。如果找到用戶,就按上面說的方法使用該項進行認證。如果沒有找到,或 cvspasswd 文件不存在,服務(wù)器將采用操作系統(tǒng)的用戶認證機制(這種機制可以通過設(shè)置 cvsconfig 文件中的 SystemAuth=no 來禁止,參閱 config)。

          除非系統(tǒng)中有 PAM(Pluggable Authentication Modules),或者 cvs 服務(wù)器端編譯的時候配置 (使用 ./configure --enable-pam - 參考 INSTALL 中的說明),否則默認的回調(diào)(callback)是查找 /etc/passwd 中的口令。在此情況下,將磋商以 PAM 代替。這意味著可以配置 cvs 使用 PAM 提供的各種口令認證方式(可能是 UNIX password,NIS,LDAP,或其他),這取決于 PAM 的全局配置文件(通常在 /etc/pam.conf 或可能是 /etc/pam.d/cvs)。詳細配置 PAM 的方法請參考 PAM 的文檔。

          注意,PAM 是 cvs 中使用的實驗特性,鼓勵反饋信息。如果你使用了 PAM 支持,請發(fā)郵件到 cvs 的郵件列表(info-cvs@gnu.orgbug-cvs@gnu.org)。

          警告:采用 PAM 可以給系統(tǒng)管理員更多的 cvs 認證靈活性,但并不比別的方法有更高的安全性。詳見下。

          CVS 在 PAM 配置文件里需要“auth”,“account”和“session”模塊。因此典型的 PAM 配置是在文件 /etc/pam.conf 里模擬標(biāo)準(zhǔn)的 cvs 系統(tǒng) /etc/passwd 認證:

               cvs	auth	    required	pam_unix.so
               cvs	account	    required	pam_unix.so
               cvs	session	    required	pam_unix.so
          

          對等的 /etc/pam.d/cvs 文件里包括

               auth	    required	pam_unix.so
               account	    required	pam_unix.so
               session	    required	pam_unix.so
          

          一些系統(tǒng)要求給出模塊的完整路徑,因此 pam_unix.so (Linux) 改為類似 /usr/lib/security/$ISA/pam_unix.so.1 (Sun Solaris)。參考 cvs 源碼發(fā)布子目錄 contrib/pam 中更多的配置例子。

          PAM 中指出的服務(wù)名“cvs”是默認配置中的服務(wù)名,也可以在編譯前使用 ./configure --with-hardcoded-pam-service-name=<pam-service-name> 重新設(shè)置。 cvs 也可以被設(shè)置成調(diào)用其他的名字 ./configure --without-hardcoded-pam-service-name,但這個特性只有你有權(quán)控制 cvs 用什么名字時才有效。

          要知道,在使用系統(tǒng)認證時會有安全漏洞:cvs 操作時是使用系統(tǒng)中用戶的正規(guī)注冊口令,而該口令網(wǎng)絡(luò)傳輸中是采用明碼方式。見 Password authentication security。這點對使用 PAM 認證會有更多的問題,因為系統(tǒng)口令的源頭是某些像 LDAP 的中心服務(wù),而 LDAP 它還被用于認證別的服務(wù)。

          另一方面,PAM 使得定期地修改口令非常容易。如果對全部活動給用戶一個口令系統(tǒng)的選項,用戶經(jīng)常定期改變他們的口令。

          在非 PAM 的配置中,口令是保存在 CVSROOT/passwd 文件里面,因為只有管理員用戶(或有等同的權(quán)限)才有此文件的修改訪問權(quán)限,所以想用定期改變口令會很困難??梢圆捎迷O(shè)計的網(wǎng)頁程序或 set-uid 程序來更新文件,或者是提交請求讓管理員進行手動修改來更新。第一種情況下,必須記住去定期更新各自的口令可能是很困難的。第二種情況下,手工的本性將是只有絕對必要時才會去修改口令。

          注意,PAM 管理員應(yīng)避免在 cvs 證明/授權(quán)(authentication/authorization)中采用配置一次性口令 OTP。如果用 OTP,管理員最好考慮其他的 Client/Server 訪問方式。參閱 Remote repositories 獲得其他方法的列表。

          現(xiàn)在,cvspasswd 文件里加入口令的唯一方法是從別處粘貼而來。也許有一天,會有一條命令 cvs passwd

          不像其他在 $CVSROOT/CVSROOT 目錄下的文件,可以在不是通過 cvs來編輯 passwd 的地方進行編輯。這是因為使 passwd 文件檢出為人們的工作副本可能的安全風(fēng)險。如果你的確需要將 $CVSROOT/CVSROOT 中的 passwd 檢出,參看 checkoutlist。

          posted on 2006-06-16 16:38 kelven 閱讀(1832) 評論(1)  編輯  收藏 所屬分類: 其它

          FeedBack:
          # re: Linux下CVS安裝及配置
          2007-09-23 20:39 | wdmrubby
          這個版本的cvsnt好像不支持中文名文件或文件夾  回復(fù)  更多評論
            
          主站蜘蛛池模板: 赣榆县| 阳春市| 澄城县| 阿瓦提县| 丰都县| 明星| 峨边| 中牟县| 闸北区| 灌南县| 阳高县| 板桥市| 永善县| 德庆县| 故城县| 花莲县| 博乐市| 武城县| 丰原市| 福鼎市| 隆尧县| 文登市| 兴文县| 公主岭市| 炉霍县| 晋州市| 化德县| 梅州市| 贡觉县| 彰化县| 娄烦县| 手游| 和林格尔县| 页游| 桦川县| 公主岭市| 青田县| 临安市| 姜堰市| 买车| 八宿县|