2008年9月17日 星期三

Freebsd passwrd move to linux

FreeBSD的帳號、密碼及其他資訊都存在master.passwd,Linux則分別存在passwd及shadow中。


我們先來看一下 freebsd 中的 master.passwd 格式...


master.passwd
帳號:密碼:UID:GID:Login Class:Change:Expire:Full Name:家目錄:Login SHELL


  • Login Class:幾乎沒在用了,通常是空的
  • Change:強迫使用者改密碼的時間週期, 0 表示不設定
  • Expire:使用者帳號的使用期限, 0 表示不設定

再來看一下  linux 的 passwd 格式


passwd
帳號:密碼: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
帳號:密碼: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


沒有留言:

張貼留言