2006年7月13日 星期四

架設CVS Server 與 AD 2003 整合(適用Fedora Core 4 及 5 )

 最近公司要將 AP 們在使用的 CVS Server 轉移到另外一台,而之前架設的人已經離職了,所以這個部份就完全交給我來處理。

一、安裝CVS
 一般 Fedora 已經內含 CVS 的套件,在安裝時記得勾選即可,若忘記勾選,等系統安裝完再從光碟安裝也可以。
二、建立 Users and Groups
 # useradd -M -s /sbin/nologin cvs <- 建立 cvs 的帳戶
 若需要建立 anonymous 帳號
 # useradd -M -s /sbin/nologin anonymous
 將系統內其他會使用到 cvs 的 User 加入到 cvs 的 Group 中
 # vi /etc/group
 cvs:x:501:sandy,tom,billy,anonymous
三、設定環境變數
 # vi /etc/profile.d/cvs.sh
 export CVS_RSH=ssh
 export CVSROOT=/cvs
 增加紅色部份的環境變數
 立即生效此環境變數
 1) 重新登入
 2) # export CVSROOT=/cvs

四、建立目錄
 # mkdir /cvs
 # chmod 2770 /cvs
五、初始化 Repository
 # cvs init <- 此指令會呼叫 $CVSROOT 環境變數
 # chown -R cvs:cvs /cvs
 
 若是沒有指定 $CVSROOT 環境變數則使用下列參數
 # cvs -d :localhost:/cvs init
 因為用 local 的模式在用 cvs,所以不用登入(login)
 -d 是指定 CVSROOT 路徑,如果沒設環境變數就要使用此參數
 init 代表要初始化 /cvs 這個目錄
六、設定 xinetd
 在 /etc/xinetd.d/ 內已有 cvs 的設定檔
 # vi /etc/xinetd.d/cvs
  service cvspserver
 {
  disable = no
  port     = 2401
  socket_type  = stream
  protocol   = tcp
  wait     = no
  user     = root
  passenv   = PATH
  server    = /usr/bin/cvs
  env     = HOME=/cvs
  server_args = -f --allow-root=/cvs pserver
 }
 紅色的部份要注意,env 參數必須跟你所放置 CVS 目錄的位置一樣
 server_args為登入時會用到的目錄名。
 重新啟動 xinetd 並啟動 CVS Server
 # service xinetd restart
 # chkconfig cvs on
七、登入
 若要使用其它使用者的話
 # cvs -d :pserver:user_name@ip_address:/cvs login
 Loggin in to :pserver:user_name@ip_address:2401/cvs
 CVS password:
 若正確則會直接回到 # 提示符號,表示 CVS Server 已正常運作

八、進階設定
 1) 為避免其它人經由 cvs 來 try password,建議可以 cvs 帳號和系統帳號分開。
  # vi /cvs/CVSROOT/passwd <- 該檔原本並不存在
  格式為:帳號:密碼:系統帳號
  ex:gavin:Sd8jtM1y09ohE:cvs
  gavin 為登入 cvs 的帳號,/etc/passwd 內不需要有這個帳號
  Sd8jtM1y09ohE 為登入的密碼,經由 md5 編碼過
  cvs 登入後對應到 /etc/passwd 內這個帳號的權限
 2) 編輯 /cvs/CVSROOT/config
  將 #SystemAuth=no 前的注解拿掉,該行的意思是登入的帳號不在 cvs 的 passwd 裡時,是否要對應到系統帳號。
 3) 增加 anonymous 登入
  新增 anonymous:md5密碼:nobody 至 /cvs/CVSROOT/passwd 中
  表示 anonymous 登入的權限是 nobody
  若新增此行則 /cvs 需修改權限
  chmod o+rx /cvs
 4) 設定 anonymous 權限為唯讀
  # vi /cvs/CVSROOT/readers
  anonymous <- 新增 anonymous,該檔列表內所有帳號都只有唯讀權限,格式為一行一個帳號。
九、指令模式
 cvs -d "CVSROOT" command
 若有用環境變數指定 CVSROOT,則可省略 -d "CVSROOT" 的參數
 CVSROOT 通常為 ":pserver:user_name@ip_address:cvs_path" 的格式
 cvs -d "CVSROOT" login:登入
 cvs -d "CVSROOT" import profile:將 profile 這個專案新增到 server 上
 cvs -d "CVSROOT" checkout profile:將 server 上 profile 專案整個抓下來
 cvs -d "CVSROOT" logout:登出
 cvs status <project>:列出該 project 內每個檔案的記錄
 cvs history <project>:列出該 project 內每個檔案的修改歷史記錄
 cvs annotate <pooject>:列出該 project 內每個檔案最後一次修改的記錄
十、AD整合
 由於 CVS 會根據系統帳號來認證,所以我們要利用 samba、winbind 來整合 AD 帳號,這樣我們就可以統一單一帳號來達到管理,若要使用與 AD 整合,則步驟二、八可以不用建立,在 AD 上建立即可。
 1. 編輯 smb.conf、krb5.conf 及 kdc.conf
  # vi /etc/samba/smb.conf
   [global]
   workgroup = MYGROUP <- 群組名稱
   realm = NTDOMAIN.COM <- 網域名稱
   security = ADS    <- 由 AD 網域認證模式
   password server = DC <- DC 主機名稱
   encrypt password = yes <- 是否加密
   wins server = w.x.y.z <- WINS 主機
   idmap uid = 10000-20000 <- AD 上帳號 UID 指定範圍
   idmap gid = 10000-20000 <- AD 上群組 GID 指定範圍
   winbind enum users = yes
   winbind enum groups = yes
   template shell = /bin/bash <- 指定 AD 帳號的 shell
   template homedir = /home/%D/%U <- 指定 AD 帳號的家目錄
   winbind use default domain = yes <- 是否自動套用網域名稱
   [範例]
   workgroup = AD2003
   realm = ad2003.com
   security = ADS
   password server = dc.ad2003.com
   encrypt password = yes
   wins server = 10.1.7.250
   idmap uid = 10000-20000
   idmap gid = 10000-20000
   winbind enum users = yes
   winbind enum groups = yes
   template shell = /bin/bash
   template homedir = /home/%D/%U
   winbind use default domain = yes

  # vi /etc/krb5.conf   [libdefaults]
   default_realm = EXAMPLE.COM <- 網域名稱
   dns_lookup_realm = false
   dns_lookup_kdc = false
   [realms]
   EXAMPLE.COM = { <- 網域名稱
   kdc = kerberos.example.com:88 <- DC 主機名稱
   admin_server = kerberos.example.com:749 <- DC 主機名稱
   default_domain = example.com <- DC 主機名稱
   }
   [domain_realm]
   .example.com = EXAMPLE.COM <- 網域名稱
   example.com = EXAMPLE.COM <- 網域名稱
   [範例]   [libdefaults]
   default_realm = AD2003.COM   dns_lookup_realm = false
   dns_lookup_kdc = false
   [realms]
   AD2003.COM = {
   kdc = dc.ad2003.com:88
   admin_server = dc.ad2003.com:749
   default_domain = AD2003.COM
   }
   [domain_realm]
   .ad2003.com = AD2003.COM
   ad2003.com = AD2003.COM

  # vi /var/kerberos/krb5kdc/kdc.conf
   [realms]
   EXAMPLE.COM = {
   [範例]
   AD2003.COM = {
 2. 重新啟動 samba 及 winbind
  # service smb restart
  # service winbind restart
  設定開機啟動
  # chkconfig smb on
  # chkconfig winbind on
 3. 加入 AD 網域
  # net ads join -U Administrator
  Administrator's password:
 4. 設定與 DC 溝通時的使用者
  # wbinfo --set-auth-user=user(具一般使用者權限即可)
  Password:
 5. 編輯 NSS 設定檔
  # vi /etc/nsswitch.conf
  passwd: files winbind
  shadow: files
  group: files winbind
  
增加紅色部份
 6. 編輯 login.defs 設定本機 uid、gid 範圍
  # vi /etc/login.defs
  UID_MIN 500
  UID_MAX 9999
  GID_MIN 500
  GID_MAX 9999
 
 修改紅色部份
 7. 編輯 cvs 的 PAM 檔
  # vi /etc/pam.d/cvs
  auth            sufficient      /lib/security/pam_winbind.so
  auth            include         system-auth
  account         sufficient      /lib/security/pam_winbind.so
  account         include         system-auth
  增加紅色的部份
 8. 在本機可用 getent 指令列出 User 或 Group 的清單,若有 AD 帳號表示整合成功,以後本機就不需要建立帳號及群組,由 AD 統一管理即可。
  # getent passwd
  # getent group
十一、CVS Client
 Eclipse http://www.eclipse.org/


沒有留言:

張貼留言