最近公司要將 AP 們在使用的 CVS Server 轉移到另外一台,而之前架設的人已經離職了,所以這個部份就完全交給我來處理。
一、安裝CVS
一般 Fedora 已經內含 CVS 的套件,在安裝時記得勾選即可,若忘記勾選,等系統安裝完再從光碟安裝也可以。
一般 Fedora 已經內含 CVS 的套件,在安裝時記得勾選即可,若忘記勾選,等系統安裝完再從光碟安裝也可以。
二、建立 Users and Groups
# useradd -M -s /sbin/nologin cvs <- 建立 cvs 的帳戶
# useradd -M -s /sbin/nologin cvs <- 建立 cvs 的帳戶
若需要建立 anonymous 帳號
# useradd -M -s /sbin/nologin anonymous
# useradd -M -s /sbin/nologin anonymous
將系統內其他會使用到 cvs 的 User 加入到 cvs 的 Group 中
# vi /etc/group
cvs:x:501:sandy,tom,billy,anonymous
# vi /etc/group
cvs:x:501:sandy,tom,billy,anonymous
三、設定環境變數
# vi /etc/profile.d/cvs.sh
export CVS_RSH=ssh
export CVSROOT=/cvs
增加紅色部份的環境變數
# vi /etc/profile.d/cvs.sh
export CVS_RSH=ssh
export CVSROOT=/cvs
增加紅色部份的環境變數
立即生效此環境變數
1) 重新登入
2) # 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 這個目錄
# 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為登入時會用到的目錄名。
在 /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
# 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 已正常運作
若要使用其它使用者的話
# 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 內這個帳號的權限
Sd8jtM1y09ohE 為登入的密碼,經由 md5 編碼過
cvs 登入後對應到 /etc/passwd 內這個帳號的權限
2) 編輯 /cvs/CVSROOT/config
將 #SystemAuth=no 前的注解拿掉,該行的意思是登入的帳號不在 cvs 的 passwd 裡時,是否要對應到系統帳號。
將 #SystemAuth=no 前的注解拿掉,該行的意思是登入的帳號不在 cvs 的 passwd 裡時,是否要對應到系統帳號。
3) 增加 anonymous 登入
新增 anonymous:md5密碼:nobody 至 /cvs/CVSROOT/passwd 中
表示 anonymous 登入的權限是 nobody
若新增此行則 /cvs 需修改權限
chmod o+rx /cvs
新增 anonymous:md5密碼:nobody 至 /cvs/CVSROOT/passwd 中
表示 anonymous 登入的權限是 nobody
若新增此行則 /cvs 需修改權限
chmod o+rx /cvs
4) 設定 anonymous 權限為唯讀
# vi /cvs/CVSROOT/readers
anonymous <- 新增 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" 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 內每個檔案最後一次修改的記錄
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 <- 是否自動套用網域名稱
由於 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
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 主機名稱
}
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 <- 網域名稱
.example.com = EXAMPLE.COM <- 網域名稱
example.com = EXAMPLE.COM <- 網域名稱
[範例] [libdefaults]
default_realm = AD2003.COM dns_lookup_realm = false
dns_lookup_kdc = false
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
}
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
.ad2003.com = AD2003.COM
ad2003.com = AD2003.COM
# vi /var/kerberos/krb5kdc/kdc.conf
[realms]
EXAMPLE.COM = {
[範例]
AD2003.COM = {
AD2003.COM = {
2. 重新啟動 samba 及 winbind
# service smb restart
# service winbind restart
# service smb restart
# service winbind restart
設定開機啟動
# chkconfig smb on
# chkconfig winbind on
# chkconfig smb on
# chkconfig winbind on
3. 加入 AD 網域
# net ads join -U Administrator
Administrator's password:
# net ads join -U Administrator
Administrator's password:
4. 設定與 DC 溝通時的使用者
# wbinfo --set-auth-user=user(具一般使用者權限即可)
Password:
# wbinfo --set-auth-user=user(具一般使用者權限即可)
Password:
5. 編輯 NSS 設定檔
# vi /etc/nsswitch.conf
passwd: files winbind
shadow: files
group: files winbind
增加紅色部份
# 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
# vi /etc/login.defs
UID_MIN 500
UID_MAX 9999
GID_MIN 500
GID_MAX 9999
修改紅色部份
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
增加紅色的部份
# 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
# getent passwd
# getent group
十一、CVS Client
Eclipse http://www.eclipse.org/
Eclipse http://www.eclipse.org/
沒有留言:
張貼留言