使用CVSACL進行CVS權限訪問控制 for Linux

使用CVSACL進行CVS權限訪問控制(for Linux)


    CVS是一個很成熟的版本控制系統,它是開源世界的傑作,並且已經成爲開源組織使用的標準版本控制系統,在幾乎所有的開源項目中得到應用。

    也正是由於CVS產生和應用於開源世界,使得它在代碼的訪問控制方面存在先天性的不足,在應用於大中型的商業項目的代碼管理中收到一定的限制。因爲這類型的項目通常都需要比較細緻的分工,不同的小組分別負責不同模塊的開發,代碼需要比較嚴格的訪問控制,不同的開發人員只能訪問授權的代碼。

    幸運的是,CVS是一個開源的軟件,我們有什麼需要的話可以通過修改它的源代碼來實現。CVSACL就是實現訪問控制的CVS補丁。它本身也是一個開源的項目,項目主頁是http://cvsacl.sourceforge.net/index.html 。它提供了對CVS的模塊,目錄和文件以及分支和tag的高級訪問控制。CVSACL定義了8級不同的訪問權限,分別是:

權限

關鍵字

說明

沒有權限

n

用戶不能做任何cvs操作

讀權限

r

可以執行annotate, checkout, diff, export, log, rannotate, rdiff, rlog, status命令

寫權限

w

可以執行commit/checkin命令

tag

t

可以執行tag/rtag命令,依賴讀權限

創建

c

可以執行add import 命令

刪除

d

可以執行rm命令

全部權限

a

可以執行所有cvs命令處理cvsacl管理命令

管理權限

p

可以執行所有命令

1.  下載CVSACL:

通過如下網址可以下載到CVSACL相關程序,目前最新版本是cvsacl-1.2.5:

https://sourceforge.net/project/showfiles.php?group_id=75057&package_id=77484&release_id=423655

cvsacl-1.2.5-for-cvs-1.11.22.tar.gz

cvs-1.11.22-cvsacl-1.2.5-patched.tar.gz

2.  安裝CVSACL:

安裝方法:cvs-1.11.22-cvsacl-1.2.5-patched.tar.gz

[root@localhost setup_cvs]# tar -zxvf cvs-1.11.22-cvsacl-1.2.5-patched.tar.gz

//解壓縮cvs-1.11.22-cvsacl-1.2.5-patched.tar.gz

[root@localhost setup_cvs]# mv cvs-1.11.22-cvsacl-1.2.5-patched cvs-1.11.22

//修改cvs-1.11.22-cvsacl-1.2.5-patched目錄名稱爲 cvs-1.11.22

[root@localhost setup_cvs]# cd cvs-1.11.22    //進入cvs-1.11.22

[root@localhost cvs-1.11.22]# ./configure    //編譯安裝

[root@localhost cvs-1.11.22]# make

[root@localhost cvs-1.11.22]# make install

[root@localhost setup_cvs]# cvs –version    //查看cvs版本

Concurrent Versions System (CVS) 1.11.22 (client/server)

with CVSACL Patch 1.2.5 (cvsacl.sourceforge.net)

注:不需要特意刪除舊版本的CVS。

3.  CVS服務器的配置:

(1) 修改配置文件:

[root@localhost /]# vi /etc/services

查看是否有:

cvspserver 2401/tcp #CVS client/server operations
cvspserver 2401/udp #CVS client/server operations

注:系統自帶了CVS時,這2行也已經有了,只需要確認一下。如果沒有,請自己加上去。

(2) 創建CVS啓動腳本:

[root@localhost /]# vi /etc/xinetd.d/cvspserver

內容如下:

service cvspserver
{
disable = no
flags = REUSE
socket_type = stream
wait = no
user = root
server = /usr/bin/cvs
server_args = -f --allow-root=/home/cvsroot pserver
log_on_success += USERID
log_on_failure += USERID
}

注:其中,server指定CVS可執行文件路徑,默認安裝就是/usr/bin/cvs,server_args指定源代碼庫路徑及認證方式等,例子中把源代碼存放在cvsroot的主目錄中,也可以另外指定路徑,但必須注意權限設置,pserver是密碼認證方式,這種方式的安全性要差一些,但操作起來比較簡單。請注意每行等號左右都有一個空格,否則無法啓動服務。

(3) 重新啓動xinetd服務:

[root@localhost /]# service xinetd restart

查看是否啓動:[root@localhost /]# netstat -l | grep cvspserver

屏幕顯示:tcp 0 0 *:cvspserver *:* LISTEN

說明已經正常啓動,如果沒有請做如下檢查:

<1>請檢查vi /etc/xinetd.d/cvspserver文件中的server = /usr/bin/cvs路徑和實際執行文件所在位置是否一致;(一般這步驟即可解決該問題)

<2>請重新檢查配置過程是否有錯誤或者遺漏;

<3>最後還必須檢查防火牆的設置,把2401端口打開。

4.  CVSACL權限設置:

(1) 創建用於CVS的專用系統組和用戶:

[root@localhost /]# groupadd cvsroot

[root@localhost /]# useradd –g cvsroot cvsadmin

(2) 初始化cvs服務器環境:

[root@localhost /]# cvs -d /cvstest init

(3) 設置CVS配置庫歸屬及權限:

[root@localhost /]# chown –R cvsadmin.cvsroot /cvstest

[root@localhost /]# chmod –R 770 /cvsroot

(4) 修改CVSROOT/CVSROOT/aclconfig配置文件:

[root@localhost /]# vi /cvstest/CVSROOT/aclconfig

UseSystemGroups=yes 行首添加“#”,表示註釋掉。

UseCVSGroup=yes 去除行首的“#”,表示啓用此句。

(5) 創建CVS用戶及組:

[root@localhost /]# cd /cvstest/CVSROOT

[root@localhost /]# htpasswd –c passwd yueyx

[root@localhost /]# vi passwd

yueyx:*******:cvsadmin

將passwd文件中的所有cvs用戶映射到同一個系統用戶cvsadmin上。

[root@localhost /]# vi group

文件格式:

group1:x:1:yueyx,test1

用戶之間用 “,”分割。

注:cvsacl有個bug,必須在組用戶最前邊添加一個不存在的cvs用戶,group文件纔會生效。原因不明,但此方法確實管用。

(6) 使用cvsacl細化權限:

[root@localhost /]# cvs -d /cvstest racl yueyx:wcd –R Project/doc

說明:/cvstest:配置庫路徑 yueyx:用戶 wcd:參見本文“CVSACL定義了8級不同的訪問權限”表格。 Project :配置庫中的Module(模塊),doc:Module(模塊)下的目錄


格式:cvs –d 配置庫位置 racl [用戶||組:權限] [-Rl] [-r tag] [模塊…] [文件…]

- R 進行目錄遞歸

- r rev 設定版本/標籤

- l列出已定義的ACLs權限

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章