FreeBSD 10.2: 環境移行:アカウントをまとめて移設

SiS 620 チップセット搭載の HP Vectra VEi7 マザーボードのサーバーを、FreeBSD 9.3 に更新できなかったため、新たに FreeBSD 10.2 サーバーを準備して、旧環境を全て手作業で移行することにしました。古いファイルの残骸を消去するいい機会と考え、64bit OS(32bitからは再インストールするしかない。)を入れてみる事にします。あとで32bit に戻すかもしれませんけどね。

さて、新規インストールで問題になるのが、アカウント情報の引っ越し。ユーザーのホームディレクトリ $HOME はバックアップ系コマンドを使えば簡単ですが、/etc/passwd の情報は最近やった事がなかったので、ちょっと戸惑いました。

2000年頃、SunOS 4.x から SunOS 5.6(Solaris 2.6)にシステムを移行した事があるのですが、その時は /etc/passwd ファイルをコピーすれば終わりでした。(余談ですが、スタンドアロンUnixサーバーをメールサーバーとして使用して、Unixアカウントをそのままメールアカウントとして使用する運用は、仕組みが単純なので利用者は多いと思います。)
その頃の FreeBSD もそんなものだったと思うのですが、それ以降セキュリティーが強化され、/etc/passwd ファイルは形骸化してしまいましたので、passwd ファイルをまるまるコピーして直接エディットしても、アカウント情報がシステムに反映されないようになっています。OSごとにシャドウパスワードのファイル名が違うようですが、FreeBSD の場合は、/etc/master.passwd のようです。

/etc/master.passwd

root で、このファイルにユーザー情報をコピーして保存した後、vipw か chfn で編集を加えて保存すれば passwd ファイルが更新できましたけど、/home の下にコピーしたユーザー毎のファイルや、passwd ファイルを読み取って表示する finger や chown コマンドは追加したユーザーアカウントを知らないと申してくれます。

/etc/pswd.db と /etc/pwd.db の更新も必要のようです。

pwd_mkdb コマンド

“man master.passwd” で調べたところ、pwd_mkdb コマンドが、まとめて面倒を見てくれるコマンドだそうで、

/usr/sbin/pwd_mkdb -p /etc/master.passwd

と実行したところ、finger が動くようになりました。

manコマンドによると、pwd_mkdb コマンドにより master.passwd から passwd が生成されると書いてあります。手動操作する場合は、このファイルをターゲットにすれば良いようです。

PASSWD(5)                 FreeBSD File Formats Manual                PASSWD(5)

NAME
     passwd, master.passwd -- format of the password file
<略>
     The passwd file is generated from the master.passwd file by pwd_mkdb(8),
     has the class, change, and expire fields removed, and the password field
     replaced by a `*' character.

まとめ

旧マシンから、同じOS の新マシンにアカウント情報を移行する手順は、

  • 旧マシンの /etc/master.passwd から必要な行をコピーする。
  • 新マシンの /etc/master.passwd にコピーする。
  • pwd_mkdb -p /etc/master.passwd を発行する。

という流れのようです。
知っていれば簡単な事ですが、検索しても、私が入力したキーワードが悪いのか、期待した検索結果に出会えず man コマンドで調べまくって3〜5時間くらい時間を費やしてしまいました。(今回は数が少なかったので手作業で移行した方が早かったのですが、ユーザーのパワード再発行が面倒になるので結局調べるしかなかった。)次回があるなら、この情報を役立てたいところ。

コメントを残す