3. FreeBSD 的特殊設定

FreeBSD 專案自己使用一個有點不同的設定,那就是同時也使用 FreeBSD CVSROOT 中的 freebsd 子目錄。因 為大量的提交者必須在相同的群組中,因此專案寫了一個簡單的 wrapper 來確認提 交者可以正確的提交,並設定儲存庫的群組名稱。

如果你的儲存庫也需要這樣的功能,那麼下面就會介紹如何建立,不過首先要 先來看一段複雜的概述。

3.1. FreeBSD 設定中使用的檔案

3.2. 步驟

  1. 只有加入你的使用者名稱到 access 中。

  2. 編輯 cvswrap.c 的路徑以符合你的設定,定義 在大寫的 ACCESS 中。同時如果預設值不符合你的情況 的話也應該修改本地實際的 cvs 程式所在位置。原始 的 cvswrap.c 希望替代伺服端的 CVS 程式,例如可 能會是 /usr/bin/ncvs

    我的 cvswrap.c 是這樣:

    #define ACCESS "/local/cvsroot/CVSROOT/access"
    #define REALCVS "/usr/bin/ncvs"
    
  3. 接下來是建立 wrapper 來確認你在提交時是在正確的群組中。 在你的 CVSROOT 中的 cvswrap.c 要能夠使用。

    在你完成編輯並加入正確的路徑後我們要來編譯原始碼:

    % cc -o cvs cvswrap.c
    

    然後進行需要設定(此步驟需要 root 權限):

    # mv /usr/bin/cvs /usr/bin/ncvs
    # mv cvs /usr/bin/cvs
    # chown root:ncvs /usr/bin/cvs /usr/bin/ncvs
    # chmod o-rx /usr/bin/ncvs
    # chmod u-w,g+s /usr/bin/cvs
    

    這會將 wrapper 安裝成預設的 cvs 程式,請確定 任何要使用儲存庫的人應該有正確的存取權限。

  4. 現在你可以刪除所有在儲存庫群組中的使用者,所有的存取控制會經由 wrapper 完成,同時 wrapper 會設定存取的正確群組。

3.3. 測試設定

你的 wrapper 現在應該已經安裝好了,你當然也可以強制提交 access 來測試是否正常:

% cvs commit -f -m 'Forced commit to test the new CVSROOT scripts' access

同樣地,如果有錯誤,檢查是否上述所有步驟都有正確的執行。

本文及其他文件,可由此下載:ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/

若有 FreeBSD 方面疑問,請先閱讀 FreeBSD 相關文件,如不能解決的話,再洽詢 <questions@FreeBSD.org>。
關於本文件的問題,請洽詢 <doc@FreeBSD.org>。