cvs的權限能夠經過cvsacl這個軟件來控制 個人系統安裝的cvs是1.11.17這個版本,系統自帶的,若是沒有請本身安裝 cvsacl能夠去這個站點下載http://cvsacl.sourceforge.net/ 安裝比較簡單 解壓文件:tar zxf cvs-1.11.22-cvsacl-1.2.5-patched.tar.gz 進入源碼目錄: cd cvs-1.11.22-cvsacl-1.2.5-patched 配置源碼文件:./configure 後面能夠不跟參數,默認吧 編譯源碼文件: make 安裝cvsacl: make install 打開/etc/server文件,查找cvspserver行是cvs的監聽端口,通常都有,若是沒有就本身添加一行吧,格式以下 cvspserver 2401/tcp # CVS client/server operations cvspserver 2401/udp # CVS client/server operations 接着在/etc/xinetd.d下建立文件cvspserver ,內容以下 service cvspserver cvs的服務名 { flags = REUSE socket_type = stream wait = no user = root server = /usr/bin/cvs cvs的可執行文件的路徑 server_args = -f --allow-root=/cvs/cms --allow-root=/cvs/caiwu pserver 這裏注意一下,是cvs的倉庫,若是有多個就在中間加空格,個人就是兩個倉庫 log_on_failure += USERID disable = no } 建立兩個組,一個是cmsadmin,一個是caiwuadmin groupadd cmsadmin groupadd caiwuadmin 建立兩個用戶,一個是cms,一個是caiwu useradd -g cmsadmin -s /sbin/nologin cms useradd -g caiwuadmin -s /sbin/nologin caiwu 這個兩個用戶是cvs用戶映射到系統的用戶,cvs的倉庫須要使用,加入到一個組,是爲了之後擴展使用方便一些 咱們如今來建立cvs的倉庫,先建立兩個目錄一個是cms,一個是caiwu mkdir /cvscms mkdir /cvs/caiwu 初始化兩個數據倉庫 cvs -d /cvs/cms init cvs -d /cvs/caiwu init 隨後能夠查看/cvs/cms和/cvs/caiwu目錄下面各自多了一個CVSROOT的目錄,這個是cvs的配置目錄 咱們來修改如下幾個文件 第一個是aclconfig chmod 770 /cvs/cms/CVSROOT/aclconfig vi /cvs/cms/CVSROOT/aclconfig 註釋掉這行UseSystemGroups=yes 啓用這行UseCVSGroups=yes 保存退出 chmod 770 /cvs/caiwu/CVSROOT/aclconfig vi /cvs/caiwu/CVSROOT/aclconfig 註釋掉這行UseSystemGroups=yes 啓用這行UseCVSGroups=yes 保存退出 第一行的意思是不使用系統驗證cvs用戶,第二行是啓用cvs的group驗證用戶,後面咱們講到 建立cvs的用戶文件有兩個方法,第一個是建立系統用戶,第二個是使用apche的htpasswd來完成,最終的目的只是想獲得加密的密碼而已,應爲個人cvs服務器有apche,全部我就使用htpasswd了 /app/apache2/bin/htpasswd -c /cvs/cms/CVSROOT/passwd test 接着輸入兩次密碼便可,會在/cvs/cms/CVSROOT目錄下生成passwd的文件,內容以下 test:91fMB/09ThoYI冒號前面是用戶名,後面是密碼,咱們稍做修改,就成了cvs可以使用的passwd文件 test:91fMB/09ThoYI:cms能看明白了吧,在密碼後面又加了一個冒號,後面的cms是系統cms用戶,如今的意思是將test的cvs用戶映射成系統的cms用戶,咱們的/cvs/cms目錄的屬主也是這個用戶,多個用戶以此類推來實現,若是你使用htpasswd建立用戶的話,第一次使用-c參數,之後就不用了 接着建立cvs工做組,這個的做用是之後賦予權限的時候使用 vi /cvs/cms/CVSROOT/group cmsgroup:x:1:a,test,test1,test2,test3 vi /cvs/caiwu/CVSROOT/group caiwugroup:x:1:a,test,test1,test2,test3 這個文件的格式是這樣的第一個是組的名字,後面是用戶,多個用戶以逗號隔開,網上的資料說cvs的group有bug,第一個用戶必須不存在,我沒有做具體的測試,就隨便寫了一個不存在的a用戶,若是你有時間測試一下 修改cms和caiwu的屬主和屬組 chown -R caiwu.caiwuadmin /cvs/caiwu chown -R cms.cmsadmin /cvs/cms 修改目錄的權限 chmod 770 /cvs/cms chmod 770 /cvscaiwu cvs的配置基本上就搞定了,下面來給倉庫配置權限吧,權限有如下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 能夠執行全部命令 cvs -d /cvs/cms racl -R test:n CVSROOT -d後面的路徑是cvs的倉庫 racl是內部參數 -R 是遞歸的就是說包括了子集目錄,test是用戶,n是權限,CVSROOT是具體的目錄,這條命令的意思是不容許test用戶讀取CVSROOT下的文件內容,默認狀況下cvs的用戶具有最高的權限,修改好了權限,能夠查看CVSROOT下的access來看具體的內容 cat /cvs/cms/CVSROOT/access # CVS ACL definitions file. DO NOT EDIT MANUALLY d:CVSROOT:HEAD:test!n: /etc/rc.d/init.d/xinetd restart重啓cvs服務