日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

如何配置和使用SSH驗證的CVS系統(tǒng)服務(wù)器

;cvs(Concurrent Version System)是一種非常普及的版本控制工具 。盡管其功能不如Perforce、Subversion等強大,但由于其便于配置、使用簡單,并且,推出時間較長,因此在各種個樣的軟件項目中應(yīng)用十分廣泛 。首先是安裝FreeBSD并應(yīng)用安全補丁 。這一步非常簡單,下載一張FreeBSD(即將推出的5.2-RELEASE是一個不錯的選擇,在這篇文章發(fā)表時,這個版本可能已經(jīng)能夠下載了)的mini iso燒成CD-ROM,然后安裝就可以了(選擇“Minimum”安裝) 。注意,為了能夠使用ssh驗證,請務(wù)必安裝crypto 。為這臺機器配置網(wǎng)絡(luò),等等之后,重新啟動就好了 。然后是安裝一些必要的package 。FreeBSD 4.x內(nèi)建了perl,而在5.x中,perl被從基本系統(tǒng)中刪去了 。為了能夠更好地使用包括ACL、commit mail在內(nèi)的一系列功能,必須安裝perl 。我個人推薦使用ports中的5.8.x版本的perl 。在安裝之前,首先確信系統(tǒng)中沒有perl 5.6.x的安裝,對于新系統(tǒng),大可以放心地執(zhí)行下面的命令: 這將刪除已經(jīng)存在的任何package 。一般來說,絕大多數(shù)FreeBSD用戶都使用cvsup來更新系統(tǒng),然而在發(fā)行的光盤中,cvsup-without-gui并沒有包含在內(nèi),而普通的cvsup package則需要X11的一系列庫 。為了避免麻煩,可以考慮下面兩種不同的途徑來完成第一次的代碼更新工作: 1、使用FreeBSD中的cvs來同步代碼: cvs -d :pserver:anoncvs@anoncvs.jp.FreeBSD.org:/home/ncvs login 輸入“anoncvs”,回車 cd /usr cvs -R -d :pserver:anoncvs@anoncvs.jp.FreeBSD.org:/home/ncvs export -r RELENG_5_2 src ports 注意:如果你使用的不是5.2-RELEASE,請適當?shù)匦薷腞ELENG_5_2(例如,4-STABLE是RELENG_4,-CURRENT是HEAD,等等) 2、安裝cvsup-without-gui: pkg_add -r cvsup-without-gui 然后用cvsup來同步代碼,限于篇幅,這里不再贅述 我個人推薦使用第一種方法,當然,第二種方法應(yīng)該會更快一些,而且不需要手工編譯cvsup 。隨后,安裝Perl 5.8.x: cd /usr/ports/lang/perl5.8 && make all install clean && rehash 緊接著我們會遇到一個很嚴重的問題:ports里面的use.perl腳本并不知道系統(tǒng)中原本沒有安裝perl,因此在執(zhí)行的時候會出錯——這時,只需要為perl做一個符號連接就可以了 。做好之后,執(zhí)行: use.perl port 這樣use.perl腳本會幫助你完成修改配置文件(如/etc/make.conf)等一系列工作 。此處不表,稍微配置一下OpenSSH(sshd)的配置,一般來說,增加下面兩行: Protocol 2 PasswordAuthentication no 這么做的好處:(1)只允許ssh2協(xié)議登錄,這能夠提供更好的安全性(2)不允許使用口令登錄,這毫無疑問地將提高安全性 。1、創(chuàng)建cvs repository 好了,前期配置基本上就結(jié)束了 。不要忘了創(chuàng)建一個用于cvs用戶的組,例如,ncvs,以及一個用于管理cvs repository的用戶,如repoman(它當然要屬于ncvs那個組),然后,創(chuàng)建一個目錄來保存cvs repository,本例中,我們把它放到/home/ncvs中: rm -rf /home/ncvs mkdir -p /home/ncvs chown -R repoman:ncvs /home/ncvs chmod -R 775 /home/ncvs 接下來就是初始化這個repository了,簡單地執(zhí)行: su -l repoman cvs -d /home/ncvs init 就可以了 。目前,所有的FreeBSD版本中包含的cvs都存在一個微小的安全漏洞,盡管這個漏洞只能在本地利用,但建議您把它補上方法是找到 /usr/src/contrib/cvs/src/expand_path.c 中的 return current_parsed_root->original; 一行,把它改為 return current_parsed_root->directory; 當然,接下來就是重新make world kernel了 。需要說明的是,如果您使用的是5-CURRENT,還需要修改一些代碼才能讓它達到5.2-RELEASE那樣的性能(-CURRENT中打開了大量的調(diào)試選項),具體方法這里不再贅述 。2、配置commitmail和ACL 接著配置cvs commitmail和ACL 。我個人認為commitmail是團隊軟件開發(fā)中非常重要的一件東西,對于cvs來說,這一點尤為重要,因為cvs沒有原子提交功能,而commitmail恰好彌補了這個不足 。FreeBSD的開發(fā)團隊使用了一套很好的perl腳本來完成commitmail的功能,同時,他們還使用cvs的hook實現(xiàn)了簡單的訪問控制功能(ACL) 。我本人使用的cvs repository基于FreeBSD的CVSROOT,并且作了少量的修改 。使用這個CVSROOT覆蓋您的CVSROOT,并且,您還需要把其中freebsd目錄下的mailsend.c編譯并將結(jié)果放到/usr/local/bin中(這個CVSROOT中的腳本假定這件事) 。另外,這個CVSROOT需要一些修改才能正式投入使用(例如,機器名,等等) 。這些設(shè)置可以在cfg_local.pm里面找到: $MAILADDRS = "cvs-all@example.org"; 這個是commitmail將要發(fā)送到的地方 。$MAIL_BRANCH_HDR = "X-Phantasm-CVS-Branch"; 這個是將要添加到commitmail頭部的信息,如果您使用郵件列表的話,它能夠幫助郵件列表自動分揀 。$MAILBANNER = "The Phantasm Studio repository"; 這一行將出現(xiàn)在commitmail中,表示commit到了哪一個repository 。if ($hostname =~ /^cvs.example.org$/i) 這個是判斷commit的主機名的 $CVSWEB_URL = "http://cvsweb.example.org/cgi-bin/cvsweb.cgi"; 這個是cvsweb服務(wù)的網(wǎng)址 簡單介紹一下CVSROOT中的其他文件 avail: 這個文件用于控制用戶組的訪問權(quán)限 。access: 這個文件用于控制誰能夠執(zhí)行cvs操作 。exclude: 這個文件用于控制那些文件不需要檢查cvs tag options: 這個文件用于控制cvs tag的展開,例如,可以定義$Phantasm$,等等 3、配置用戶和限制ssh權(quán)限 使用ssh驗證的一個比較讓人頭疼的問題就是,ssh意味著用戶擁有一個系統(tǒng)賬號,并且,他們能夠登錄進來 。如果配置不當,他們還能得到一個shell,這很自然地會成為潛在的安全隱患 。因此,必須非常小心地處理cvs的ssh驗證問題 ?;镜脑瓌t是:禁止用戶作任何操作,除非我們允許他們這么做 。按照下面的規(guī)則創(chuàng)建用戶: 用戶的“主”組是ncvs(這不僅限制用戶的權(quán)限,也讓我們能夠更容易地控制其他用戶不能在cvs repository里面隨意commit) 用戶不使用口令驗證,這將緩解由于不正確地設(shè)置ftp等造成的安全隱患 仍然給用戶一個shell,這個“shell”可以是一個perl腳本,它只允許執(zhí)行cvs 開頭的命令 隨后,讓用戶使用openssh的ssh-keygen生成自己的密鑰對 。OpenSSH在絕大多數(shù)*BSD和Linux發(fā)行版中都可以找到,如果用戶使用的是Windows桌面,則需要安裝cygwin(特別地,安裝net中的OpenSSH),當然,執(zhí)行的命令是一樣的: ssh-keygen -t dsa -b 2048 對于偏執(zhí)狂型安全愛好者,可以考慮將-b后面的2048換成4096 。當然,根據(jù)木桶原理,如果你真是一個偏執(zhí)狂的話,顯然也應(yīng)該強迫你的所有合作者也都使用至少和你一樣長的密鑰:) 之后,管理員應(yīng)該把用戶(committer)的key放到服務(wù)器上用戶對應(yīng)的文件夾中的authorized_keys里面 。例如,我的一個public key如下: ssh-dss AAAAB3NzaC1kc3MAAAEBAL 1jinOw 86RcTEaSM5/Hz4Lr9tIS0IQsX8ebo TwLzWnqpOHRh2KBCGn/e0xGCIAai7PGz7c SZCvrLiRvG9mCsMMMue8ZIL QF4OAmMd Cz8Qoyg0cc4YXImOd UEpdOX29PC4aMAz28v/GO2yf58/Qa49Clfq1kHa/8q3IAgs9o W95/ArG IWFOsN1Tv9nh4XJb5AQjpa5uMlB5SEmvKGTXQ2oYiRVIxL8vzHL6MtO/8x1 j8 RioSH6FCpEXS7UJbYxE7vF3m5Fa5o6g2dIZewphsleOeHkvYJ442Hqvsly3p4 4N dvim4bY2HMDha5r5zeTV8tTlOz4wQVgKyWoEAAAAVAINGzX7uU0vR8l63qhBhUeWGZt C9AAABADWiO 9bvV7DApsn08LR1eoEnMjJFQgEfGlbV EvZHkO0bkHZAdRIKtVmgNUw G6uufykkt2Tb q5SbVNZkzeaFVv4ZMtnjSvEPIZrEXcQFFguGk1it5v5EYcmq4G8 j1 BFTVHef4b1wMTSt11WtEz0LUYncuZ6LA48/WGTuZiSm8JkchgVm8HhR9NqjdeFJH8sO RUhUBoxyWjo/hv7zFg7HqoJGzeNfrEhFg36psR2RDaRvSP0vN1W2q4j5OZy3gB6ZyVt nsEPl1HELhlaCFifmdz1LVxDx FyPy6wMsPQLTmB1g6N1J6PWy3qCTJ0NyQgarSt3/A TQ0InF1BOdJn8QAAAEAPb1OgswuMHdEsHk2ETZVmOKOkI9Rjf72vjZ3xG45iEbCH/7p aTP8OQmJMW9FD4MHjdmtktPVYXDIa9Hj/IM44zhfMHEdKs9LlFUK5dBgNUps yPj2Ns Mr2rl771ODR0mB52FwrXm1FCmNTM7WQpFOEy/QhtZRpHK 7/YZp7PBggt17Fw7rbjP2 zhWnZluoSKLgvfkhxhJuOMm/ElNJx2c XHdxPqI3eR5UxzLNjDUNh59I8 h E69bFB3 b2uhKqziziHOQcqoH5r0Kud/DBBE79lU3mRUF8FQNygCRh/V3yFzed40rc0nF0PQpNZ 6zodDTJByrm6vX5wr2lI4RgA9w== bitripper@grimreaper.delphij.net 說明:public key是不允許折行,這里是為了排版方便 。我們剛才給用戶開了shell,這仍然是潛在的隱患,于是我們收緊這方面的安全性,在public key項目前加入下面的文字: command="/usr/bin/cvs --allow-root=/home/ncvs server" 于是,整個行看起來應(yīng)該像下面這樣: command="/usr/bin/cvs --allow-root=/home/ncvs server" ssh-dss AAAAB ............................. X5wr2lI4RgA9w== bitripper@grimreaper.delphij.net 這個command的意思是ssh上來就執(zhí)行/usr/bin/cvs --allow-root=/home/ncvs server這個命令,而且,只能執(zhí)行這個命令 。這樣,除非在cvs本身中存在漏洞,否則,不可能通過ssh切出真正的shell 。--allow-root限定了能夠使用的repository,這樣,用戶不能隨便指定其他的repository,因而,試圖破壞安全性將變得更加困難 。如果需要多個repository,也可以指定多個allow-root參數(shù) 。需要說明的是,如果用戶擁有多個public key,則需要在每個public key之前指定command 。4、配置cvsweb 配置cvsweb是相當簡單的 。首先安裝apache(我嘗試過1.3.x和2.0.x),配置停當,從port里面安裝cvsweb就可以了: cd /usr/ports/devel/cvsweb && make all installl clean 然后去修改它的配置文件: cd /usr/local/etc/cvsweb vi cvsweb.conf 找到 @CVSrepositories = ( 一行,按照其中的例子在下面增加自己的repository,例如: "ncvs" => ["New CVS Repository", "/home/ncvs"], 有多少寫多少,當然,@CVSrepositories的第一個將是直接訪問cvsweb.cgi時出現(xiàn)的repository 。在FreeBSD 5.1-CURRENT的開發(fā)過程中所進行的一些修改造成了ports中的cvsweb無法正常地調(diào)用cvs和rcs工具,這將導致它無法正常工作 。為了解決這個問題,可以從下面的網(wǎng)址找到最新版本的cvsweb: http://www.freebsd.org/projects/cvsweb.html 筆者撰寫本文時,最新的cvsweb版本是2.9.1 beta 。在安裝之前,需要先安裝另外兩個port: cd /usr/ports/devel/p5-IPC-Run && make all install clean cd /usr/ports/net/p5-URI && make all install clean 然后把下載的tbz文件解包,復制到適當?shù)奈恢?cgi-bin和相關(guān)的圖片目錄)就可以用了 。

推薦閱讀