2008年10月1日 星期三

Linux MAIL主機轉換 , 帳號遷移

當伺服器用了多年難免會遇到主機效能的因素要更換設備 .

我們在做主機更換時 , 通常都是需要把使用者原本的帳號資料 ; 電子郵件等 , 原封不動的搬到新主機上 , 讓使用者也感覺不出使用上有什麼相異之處 , 只有感覺換新主機後系統反應變快 , 而且容量也變大 , 這就是一個非常成功的換機專案 .

本篇討論的只針對電子郵件的轉換作分享 , 其餘的服務就不包含在內 .

前置準備 :

使用者帳號所需檔案
/etc/passwd , /etc/group

使用者電子郵件存放位置
/var/spool/mail , /home

Passwd , group 檔案說明 :

passwd 檔 ==> 每筆記錄有7個欄位 , 每一欄位都用冒號 (:) 分隔
第一欄 使用者名稱
第二欄 使用者密碼
第三欄 使用者識別碼 (UID)
第四欄 群組編號 (GID)
第五欄 使用者全名
第六欄 使用者家目錄
第七欄 使用者使用的 SHELL程式

group 檔 ==> 每筆記錄有4個欄位 , 每一欄位都用冒號 (:) 分隔
第一欄 群組名稱
第二欄 密碼
第三欄 群組編號 (GID)
第四欄 群組成員

在使用者帳號密碼部分 , 在安裝好系統時已經被做加密(shadow)處理
所以當你把 passwd 檔案打開時 可以看到密碼欄裡面用 X 代表

如下圖




首先 要先把新的伺服器安裝好必要的程式都準備好 , 然後分兩部分進行 :

第一部分 使用者帳號

第二部分 MAIL 檔案處理

A : 使用者帳號


1. 在舊的伺服器裡下指令 , 把 SHADOW 密碼檔轉換至編碼回存到 passwd檔裡面

pwunconv

pwunconv 指令可以關閉 shadow 的功能 , 然後它會把密碼從/etc/shadow檔案寫回至 /etc/passwd 檔案裡


2. 把舊帳號的檔案依照 UID 大小依序排列另存到新的檔案 passwd.old


sort -t : -k 3 -n passwd > passwd.old

sort 指令解說 :

-t 指定排序所用到欄位分隔字元
-k 指定由第幾欄位做排序
-n 依照數值的大小排序

3. 利用 vi 去修改 passwd.old 把 UID 在500之前的帳號 全部刪掉

因為 UID 在 500 之前的都是系統帳號 , 這些系統帳號若也跟著轉移到新的主機會發生問題 , 所以只要把 UID 500 以後的使用者帳號轉過去就行 .

註 : UID編號 0 為系統帳號 , 1-500 保留給系統帳號使用 , 500以後給一般使用者



4. 把 passwd.old 檔案 COPY 至新的伺服器

然後把已經整理好的檔案 passwd.old 跟新主機的 passwd 合併

cat passwd.old >> /etc/passwd



5. 檢查一下是否新的 passwd 是否生效

id username

若可以顯示正確的 UID GID 等等資料 就表示帳號合併成功 , 如下圖 :



6. 把使用者密碼檔 passwd 恢復 SHADOW 加密

pwconv

這指令把 passwd 檔案第二欄位的密碼編碼 , 轉換成 SHADOW檔 . 然後這欄位變成 X .

7. group 檔案轉移步驟如 passwd 一樣

只是我們很少在 group 加上密碼 , 所以有關於 pwunconv , pwconv 就可以省略 .

做到這裡整個帳號轉移步驟就完成 , 可以用之前帳號登入看看 !!


B : MAIL 檔案處理


mail 資料放在2個地方 , /var/spool/mail , /home , 在這底下每個使用者的帳號檔案

COPY 到新的伺服器 . 注意 copy 到新主機後要檢查各檔案的權限

例如 使用者 lee 他的 mail 是儲存在 /var/spool/mail/lee and /home/lee 這兩個路徑

如下圖 :

目錄 /var/spool/mail 底下



目錄 /home 底下



目錄 /home/lee 底下



當把舊的伺服器上面 MAIL 相關檔案搬到新伺服器上的相對位置
然後把 權限 , OWNER 變更完成 (請參考上圖 )
MAIL的轉移工作就大功告成 !!
原本的信件都會完整的在新的伺服器上

沒有留言: