3.管理員登錄服務器
其實上面的連接服務器的過程已經包含了管理員登錄服務器的過程,不在復述了。需要說明的是,CVSNT有2中用戶驗證方式:window和CVSNT混合驗證方式,CVSNT單一驗證方式。
混合驗證方式指的是這臺機子上的用戶以及在CVSNT上建立的用戶都可以通過驗證,而CVSNT單一驗證方式只能讓CVSNT上建立的用戶通過驗證,而這臺機子上的用戶無法通過驗證。驗證方式由config文件的SystemAuth的值來決定,如果是yes,則為混合驗證方式;如果是no,則是單一驗證方式。默認情況下是混合方式。
為了安全保證,一般選擇單一驗證方式。
方式是打開checkout到本地的config文件并且修改SystemAuth=no,保存并commit。
4.創(chuàng)建普通用戶和組
創(chuàng)建普通用戶的過程其實是創(chuàng)建管理用戶過程的子過程,上面已經提到了。在這里我告訴大家一個快捷的方法,如果你創(chuàng)建的不同的用戶初始密碼都相同的話,可以打開CVSROOT下面的passwd文件,直接在該文件下面添加多個user和密碼。顯示的密碼是加密處理過的。
格式是:username:password:servername
sample:
cvsadmin:$1$N?l[Tii$uXUrYVW8YQM/4BuWX0Uxj1:share
當然也可以使用命令創(chuàng)建不同用戶名和密碼
cvs passwd -a username
創(chuàng)建組的過程也比較簡單,只需要在本地的CVSROOT下面新建一個group文件,在文件中輸入內容
group1:user1 user2
group2:user3 user7
...............
然后保存并commit可以了。
5.設置用戶和組的讀寫權限
CVS有兩種讀寫權限的設置方法,一是粗粒度的,一是細粒度的。只有CVS管理員才能進行訪問權限的修改。粗粒度的方法是在CVSROOT 中添加readers 或writers 文件來實現。在readers里添加的任何一個帳戶對當前庫只擁有讀取權限,添加格式是每行一個帳戶名。例如,我們在客戶端的CVSROOT 目錄里添加readers 文件,將之前的一個新建帳戶user1 放到里面,然后commit 這個readers 文件到服務器。user1 不能進行commit 了。實際的測試結果是在使用user1 登陸之后執(zhí)行commit 指令,系統(tǒng)會報告正常執(zhí)行完畢。但實際上,沒有任何東西被commit,暴露了CVS在人機界面上的不完善。writers 文件的操作readers 完全一樣。如果一個帳戶名被同時寫到兩個文件里,此帳戶只有只讀權限。細粒度的方法是使用chacl 命令。例如/TestRep 里有3 個工程,project1、project2、project3。
使用命令:
cvs chacl -u user1 -a none -d project1,project2,project3
cvs chacl -u user1 -a all -d project1
cvs chacl -u user1 -a read,write -d project2
cvs chacl -u user1 -a read -d project3
可以讓user1 擁有對project1 目錄的完全控制權,對project2 目錄的讀寫權,和對project3 目錄的只讀權。
第一條命令首先刪除user1 的所有權限,在隨后的3 條命令里分別設置了3 個不同目錄權限。
我們也可以直接給組設置權限,這樣一來組下面的用戶具有了和組相同的權限
cvs chacl -u group1 -a read -d project1
說明:在實際使用的時候,如果在設置了SystemAuth=no之后,再添加用戶,會出現
cvs [passwd aborted]: Only administrators can add or change another's password
的錯誤,所以建議在添加完需要的普通用戶之后再設置SystemAuth=no