2012年10月18日 星期四

FreeBSD 帳號密碼移轉至 linux


FreeBSD的帳號密碼及其他資訊都存在master.passwd,Linux則分別存在passwd及shadow中。
master.passwd@FreeBSD
帳號:密碼:UID:GID:Login Class:Change:Expire:Full Name:家目錄:Login SHELL
  • Login Class:幾乎沒在用了,通常是空的
  • Change:強迫使用者改密碼的時間週期, 0 表示不設定
  • Expire:使用者帳號的使用期限, 0 表示不設定
passwd@Linux
帳號:密碼:UID:GID:Full Name:家目錄:Login SHELL
FreeBSD比Linux多了三個欄位
所以我們將那三個欄位捨棄,並把密碼那欄設為x,因為Linux的密碼是存在shadow
cat master.passwd.bsd | awk -F":" '$3>=1002&&$3<=60000{printf"%s:x:%s:%s:%s:%s:%s\n",$1,$3,$4,$8,$9,$10}' > passwd.linux


shadow@Linux
帳號:密碼:3:4:5:6:7:8:9
  • 3.last password change
  • 4.days until change allowed
  • 5.days before change required
  • 6.days warning for expiration
  • 7.days before account inactive
  • 8.date when account expires
  • 9.reserved for future use
接著處理shadow
cat master.passwd.bsd | awk -F":" '$3>=1002&&$3<=60000{printf "%s:%s:13367:0:99999:7:::\n",$1,$2 }' > shadow.linux

再來處理group
cat group.bsd | awk -F":" '$3 >=1002&&$3<=60000{printf "%s::%s:%s\n",$1,$3,$4 }' > group.linux

接著把他們附加到原本的檔案後面
cat shadow.linux >> /etc/shadow
cat passwd.linux >> /etc/passwd
cat group.linux >> /etc/group



home、mail的移轉只需要用tar將資料夾打包即可。

如果不移轉home的資料,但是需要建立user home,寫迴圈來建立。
cd /tmp
vim create_user_home.sh
#!/usr/bin/ksh
for users in `awk -F: '{print $1}' passwd.linux`
do
mkdir /home/$users
chown $users:
$users /home/$users
chmod 700
done
執行sh
./create_user_home.sh




註:$3 >=1002  的部份是uid,需按照系統預設起始值修改


參考:
http://mail.lsps.tp.edu.tw/~gsyan/freebsd2001/Linux2FreeBSD.html
[轉錄] FreeBSD帳號密碼轉移至Linux

1 則留言:

  1. 今天發現一個問題,由於 freebsd 和 linux 的檔案路徑不同,所以轉換後的 shell 可能會無法使用。

    例如:nologin在 freebsd 是放在 /usr/sbin/nologin ,但是在 linux 是放在 /sbin/nologin

    因此轉換後必須檢查 shell 的位置

    回覆刪除