亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 操作系統 > 正文

如何配置和使用SSH驗證的CVS系統服務器

2024-06-28 13:02:58
字體:
來源:轉載
供稿:網友
 

cvs(Concurrent Version System)是一種非常普及的版本控制工具。盡管其功能不如Perforce、Subversion等強大,但由于其便于配置、使用簡單,并且,推出時間較長,因此在各種個樣的軟件項目中應用十分廣泛。

首先是安裝FreeBSD并應用安全補丁。這一步非常簡單,下載一張FreeBSD(即將推出的5.2-RELEASE是一個不錯的選擇,在這篇文章發表時,這個版本可能已經能夠下載了)的mini iso燒成CD-ROM,然后安裝就可以了(選擇“Minimum”安裝)。注意,為了能夠使用ssh驗證,請務必安裝crypto。為這臺機器配置網絡,等等之后,重新啟動就好了。

然后是安裝一些必要的package。FreeBSD 4.x內建了perl,而在5.x中,perl被從基本系統中刪去了。為了能夠更好地使用包括ACL、commit mail在內的一系列功能,必須安裝perl。

我個人推薦使用ports中的5.8.x版本的perl。在安裝之前,首先確信系統中沒有perl 5.6.x的安裝,對于新系統,大可以放心地執行下面的命令:

這將刪除已經存在的任何package。一般來說,絕大多數FreeBSD用戶都使用cvsup來更新系統,然而在發行的光盤中,cvsup-without-gui并沒有包含在內,而普通的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,請適當地修改RELENG_5_2(例如,4-STABLE是RELENG_4,-CURRENT是HEAD,等等)

2、安裝cvsup-without-gui:

pkg_add -r cvsup-without-gui

然后用cvsup來同步代碼,限于篇幅,這里不再贅述

我個人推薦使用第一種方法,當然,第二種方法應該會更快一些,而且不需要手工編譯cvsup。隨后,安裝Perl 5.8.x:

cd /usr/ports/lang/perl5.8 && make all install clean && rehash

緊接著我們會遇到一個很嚴重的問題:ports里面的use.perl腳本并不知道系統中原本沒有安裝perl,因此在執行的時候會出錯——這時,只需要為perl做一個符號連接就可以了。做好之后,執行:

use.perl port

這樣use.perl腳本會幫助你完成修改配置文件(如/etc/make.conf)等一系列工作。此處不表,稍微配置一下OpenSSH(sshd)的配置,一般來說,增加下面兩行:

PRotocol 2

PassWordAuthentication no

這么做的好處:(1)只允許ssh2協議登錄,這能夠提供更好的安全性(2)不允許使用口令登錄,這毫無疑問地將提高安全性。

1、創建cvs repository

好了,前期配置基本上就結束了。不要忘了創建一個用于cvs用戶的組,例如,ncvs,以及一個用于管理cvs repository的用戶,如repoman(它當然要屬于ncvs那個組),然后,創建一個目錄來保存cvs repository,本例中,我們把它放到/home/ncvs中:

rm -rf /home/ncvs

mkdir -p /home/ncvs

chown -R repoman:ncvs /home/ncvs

chmod -R 775 /home/ncvs

接下來就是初始化這個repository了,簡單地執行:

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中打開了大量的調試選項),具體方法這里不再贅述。

2、配置commitmail和ACL

接著配置cvs commitmail和ACL。我個人認為commitmail是團隊軟件開發中非常重要的一件東西,對于cvs來說,這一點尤為重要,因為cvs沒有原子提交功能,而commitmail恰好彌補了這個不足。

FreeBSD的開發團隊使用了一套很好的perl腳本來完成commitmail的功能,同時,他們還使用cvs的hook實現了簡單的訪問控制功能(ACL)。我本人使用的cvs repository基于FreeBSD的CVSROOT,并且作了少量的修改。

使用這個CVSROOT覆蓋您的CVSROOT,并且,您還需要把其中freebsd目錄下的mailsend.c編譯并將結果放到/usr/local/bin中(這個CVSROOT中的腳本假定這件事)。另外,這個CVSROOT需要一些修改才能正式投入使用(例如,機器名,等等)。這些設置可以在cfg_local.pm里面找到:

$MAILADDRS = 'cvs-all@example.org';

這個是commitmail將要發送到的地方。

$MAIL_BRANCH_HDR = "X-Phantasm-CVS-Branch";

這個是將要添加到commitmail頭部的信息,如果您使用郵件列表的話,它能夠幫助郵件列表自動分揀。

$MAILBANNER = "The Phantasm Studio repository";

這一行將出現在commitmail中,表示commit到了哪一個repository。

if ($hostname =~ /^cvs/.example/.org$/i)

這個是判斷commit的主機名的

$CVSWEB_URL = "http://cvsweb.example.org/cgi-bin/cvsweb.cgi";

這個是cvsweb服務的網址

簡單介紹一下CVSROOT中的其他文件

avail: 這個文件用于控制用戶組的訪問權限。

access: 這個文件用于控制誰能夠執行cvs操作。

exclude: 這個文件用于控制那些文件不需要檢查cvs tag

options: 這個文件用于控制cvs tag的展開,例如,可以定義$Phantasm$,等等

3、配置用戶和限制ssh權限

使用ssh驗證的一個比較讓人頭疼的問題就是,ssh意味著用戶擁有一個系統賬號,并且,他們能夠登錄進來。如果配置不當,他們還能得到一個shell,這很自然地會成為潛在的安全隱患。

因此,必須非常小心地處理cvs的ssh驗證問題。基本的原則是:禁止用戶作任何操作,除非我們允許他們這么做。

按照下面的規則創建用戶:

用戶的“主”組是ncvs(這不僅限制用戶的權限,也讓我們能夠更容易地控制其他用戶不能在cvs repository里面隨意commit)

用戶不使用口令驗證,這將緩解由于不正確地設置ftp等造成的安全隱患

仍然給用戶一個shell,這個“shell”可以是一個perl腳本,它只允許執行cvs 開頭的命令

隨后,讓用戶使用openssh的ssh-keygen生成自己的密鑰對。OpenSSH在絕大多數*BSD和linux發行版中都可以找到,如果用戶使用的是Windows桌面,則需要安裝cygwin(特別地,安裝net中的OpenSSH),當然,執行的命令是一樣的:

ssh-keygen -t dsa -b 2048

對于偏執狂型安全愛好者,可以考慮將-b后面的2048換成4096。當然,根據木桶原理,如果你真是一個偏執狂的話,顯然也應該強迫你的所有合作者也都使用至少和你一樣長的密鑰:)

之后,管理員應該把用戶(committer)的key放到服務器上用戶對應的文件夾中的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"

于是,整個行看起來應該像下面這樣:

command="/usr/bin/cvs --allow-root=/home/ncvs server" ssh-dss AAAAB

.............................

X5wr2lI4RgA9w== bitripper@grimreaper.delphij.net

這個command的意思是ssh上來就執行/usr/bin/cvs --allow-root=/home/ncvs server這個命令,而且,只能執行這個命令。這樣,除非在cvs本身中存在漏洞,否則,不可能通過ssh切出真正的shell。--allow-root限定了能夠使用的repository,這樣,用戶不能隨便指定其他的repository,因而,試圖破壞安全性將變得更加困難。如果需要多個repository,也可以指定多個allow-root參數。

需要說明的是,如果用戶擁有多個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時出現的repository。

在FreeBSD 5.1-CURRENT的開發過程中所進行的一些修改造成了ports中的cvsweb無法正常地調用cvs和rcs工具,這將導致它無法正常工作。為了解決這個問題,可以從下面的網址找到最新版本的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文件解包,復制到適當的位置(cgi-bin和相關的圖片目錄)就可以用了。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲精品av在线| 欧美电影在线观看高清| 亚洲人午夜色婷婷| 国产精品爽爽爽爽爽爽在线观看| 国产欧美一区二区三区久久人妖| 91在线视频导航| 91精品国产乱码久久久久久久久| 亚洲人成网站777色婷婷| 2019亚洲男人天堂| 亚洲福利在线播放| 中文字幕在线视频日韩| 精品人伦一区二区三区蜜桃网站| 国产精品久久一区| 亚洲人成77777在线观看网| 九九九久久久久久| 国产精品露脸自拍| 亚洲美女精品久久| 欧美国产日韩免费| 亚洲欧美日韩区| 国产精品白嫩美女在线观看| 日韩精品免费视频| 黑人巨大精品欧美一区二区免费| 国产精品久久久久久久久久久久久久| 欧美成人免费在线观看| 成人www视频在线观看| 国产精品揄拍500视频| 日韩精品高清视频| 欧美极度另类性三渗透| 成人疯狂猛交xxx| 伊人伊人伊人久久| 欧美成人精品在线| 国产97免费视| 午夜精品久久久久久久男人的天堂| 中文亚洲视频在线| 91国产在线精品| 91精品国产成人www| 黄色成人av在线| 亚洲精品综合精品自拍| 成人激情视频免费在线| 欧美在线视频在线播放完整版免费观看| 亚洲第一色中文字幕| 久久影视电视剧免费网站| 亚洲欧美一区二区精品久久久| 少妇av一区二区三区| 国产亚洲欧美一区| 国产精品一区av| 欧美激情18p| 亚洲欧美中文在线视频| 国内精品一区二区三区四区| 久久久久久国产精品| 亚洲天堂av网| 亚洲乱亚洲乱妇无码| 欧美亚洲国产精品| 亚洲人高潮女人毛茸茸| 性日韩欧美在线视频| 欧美亚洲国产视频| 日韩美女在线播放| 97超视频免费观看| 亚洲欧美一区二区精品久久久| 精品性高朝久久久久久久| 国产成人在线播放| 国产亚洲人成网站在线观看| 亚洲一区二区久久| 欧美在线视频观看| 日韩精品在线观看一区二区| 国产精品免费福利| 亚洲成人av在线| 国产精品福利无圣光在线一区| 亚洲精品电影久久久| 久久视频国产精品免费视频在线| 亚洲成色777777在线观看影院| 国产狼人综合免费视频| 国产在线视频不卡| 国产日韩在线精品av| 国产午夜一区二区| 91麻豆国产语对白在线观看| 欧美性色视频在线| 黄色一区二区三区| 国产精品电影在线观看| 91九色视频在线| 国产精品日韩久久久久| 国产精品久久久久9999| 日本欧美精品在线| 亚洲国产精品yw在线观看| 中文字幕欧美国内| 国产精品免费观看在线| 亚洲色图综合网| 久久久在线免费观看| 亚洲片av在线| 国产精品久久婷婷六月丁香| 日韩电影网在线| 久久人人爽人人爽人人片亚洲| 亚洲视频电影图片偷拍一区| 中文字幕视频一区二区在线有码| 成人h视频在线| 深夜福利国产精品| 欧美激情va永久在线播放| 国产精品一久久香蕉国产线看观看| 少妇av一区二区三区| 久久国产精品久久久久| 亚洲天堂av电影| 国产亚洲精品久久久优势| 亚洲精品国产精品国自产在线| 欧美综合激情网| 亚洲精品福利视频| 久久久久久午夜| 中文字幕亚洲天堂| 中文字幕亚洲图片| 91精品久久久久久久久不口人| 国产成人精品午夜| 亚洲久久久久久久久久| 国内精品视频久久| 国产精品一香蕉国产线看观看| 亚洲国产高清高潮精品美女| 国产精品视频导航| 欧美视频一二三| 久久久国产精品免费| 中文字幕日韩精品在线| 亚洲国产欧美一区二区三区久久| 91精品国产综合久久男男| 亚洲国产精品美女| 欧美极品少妇与黑人| 欧美电影《睫毛膏》| 国产精品高精视频免费| 性金发美女69hd大尺寸| 中文字幕精品一区久久久久| 日韩中文在线观看| 中文字幕亚洲无线码在线一区| 国产精品精品一区二区三区午夜版| 国产日本欧美一区| 久久免费成人精品视频| 成人淫片在线看| 亚洲美女久久久| 亚洲国产精品网站| 最近2019中文字幕第三页视频| 亚洲成年人影院在线| 欧美视频在线视频| 国产精品aaaa| 日韩中文在线中文网在线观看| 福利精品视频在线| 亚洲欧美综合另类中字| 综合网中文字幕| 亚洲精品不卡在线| 国产自摸综合网| 欧美激情按摩在线| 日韩欧美主播在线| 亚洲日韩第一页| 精品国产31久久久久久| 欧美日本中文字幕| 欧美亚洲日本网站| 久久精品国产69国产精品亚洲| 午夜精品久久久久久99热| 欧美高清激情视频| 亚洲精品欧美一区二区三区| 97成人超碰免| 2023亚洲男人天堂| 丁香五六月婷婷久久激情| 亚洲va久久久噜噜噜久久天堂| 97成人超碰免| 亚洲成人精品久久| 久久久亚洲影院你懂的| 亚洲精品v欧美精品v日韩精品| 91av在线不卡| 欧美日韩激情网|