Q. コンソールから root でログインしようとしましたが、パスワードを忘れて しまいログイン出来ません。どうしたら良いでしょうか? A. root のパスワードを忘れてしまうなど言語道断です。手始めに security(7) を読むなどして、ちゃんとセキュリティに関して勉強し、ルートの心を学んで ください。最近ではインターネットに常時接続されるマシンも多くなっていま すから、もし悪意のある攻撃を受けたらひとたまりもないでしょう。これから は絶対に忘れないようにするということで、以下に対処方法を説明します。 まずマシンが動作中であれば、なんとかしてシステムを止めなければなりませ ん。shutdown(8) コマンドや CTRL+ALT+DEL キーが使えれば安全にリブートで きますが、どちらも不可能であれば、sync(8) コマンドを2,3回タイプしてか ら、リセットまたは電源を切るようにしてください。もし sync もできないよ うなら…、神様にお祈りするしかないでしょう。 次にパスワードの変更方法ですが、/etc/ttys で console が `insecure' に 設定されていると、シングルユーザ・モードのシェルが起動される前に、root のパスワード入力を求められてしまいお手あげなので、fixit floppy などを 利用することになります。デフォルトのままなら console は `secure' です ので、シングルユーザ・モードに落して passwd(1) コマンドを使うだけです。 # If console is marked "insecure", then init will ask for the root password # when going to single-user mode. console none unknown off secure ^^^^^^ ここを確認 1. console が `secure' の場合 (FreeBSD のデフォルト) (1) シングルユーザ・モードに落します。 `shutdown now' でシングルユーザに落します。それができないならリブー トして次のような loader(8) のメッセージが表示されたら、スペースバー を叩いて autoboot を停止させ、コマンドプロンプトから `boot -s' と タイプします。 Hit [Enter] to boot immediately, or any other key for command prompt. Booting [/boot/kernel/kernel] in 7 seconds... FreeBSD 2.2.x では "boot:" の表示が出たら "-s [RET]" と入力します。 (2) "Enter root password, or ^D to go multi-user" と表示される場合は、2. の方法を試してください。 "Enter pathname of shell or RETURN for /bin/sh:" と表示されたら、そのままリターンキーを押して次へ進みます。 (3) 念のためファイルシステムの整合性をチェックします。 # fsck -p システムを強制リセットした場合、ファイルシステムが損傷を受ける可 能性があります。重大な不整合が発見されたとき `fsck -p' はエラーで 終了しますので、エラーが報告されたパーティションに対し、個別に fsck(8) をかける必要があります。 (4) ファイルシステムをマウントします。 # mount -u / # mount -a -t ufs (5) ここで、 # passwd として root のパスワードを設定して下さい。 (6) root のパスワード設定が終わったら # exit して下さい。OS が起動されます。 2. console が `insecure' の場合 要点は別のシステムからブートすることです。その際、厳密に FreeBSD の バージョンが同じでなくともかまいませんが、できるだけ同じものを使うこ とを勧めます。もし、別の HDD, スライスからブート可能であれば、それを 使うのも良いですし、"live filesystem" CD/DVD や fixit floppy を使う のでもかまいません。ここでは fixit floppy を使うものとして説明します。 (1) kern.flp, mfsroot.flp でインストーラを起動し、メニューから Fixit モードに入ります (Main Menu -> Fixit -> Floppy または CDROM)。 マシン構成によっては、kern.flp のカーネルをカスタムカーネルに差し 替えておく必要があるかもしれません。 (2) 必要とするデバイスファイルを作成します。既に /mnt2/dev に存在する なら、それを使ってもかまいません。 # ln -s /mnt2/etc/group /etc # ln -s /mnt2/dev/MAKEDEV /dev # cd /dev && sh MAKEDEV da0s2a FreeBSD のバージョンによっては、MAKEDEV には修正が必要です。これで エラーとなるようなら次のようにしてみてください。 # sed 's%/sbin/mknod%/mnt2/stand/mknod%' /mnt2/dev/MAKEDEV > /dev/MAKEDEV (3) ファイルシステムをマウントします。 # fsck -p /dev/da0s2a || fsck /dev/da0s2a # mount /dev/da0s2a /mnt まずルートパーティションを /mnt にマウントし、/usr パーティション を /mnt/usr へというふうに階層的にマウントしてあげます。fixit.flp では /usr が必要ですが、CDROM が使える場合はルートだけで足ります。 (4) root のパスワードフィールドを空にします。 # vi /mnt/etc/master.passwd root:$1$xxxxx:0:0::0:0:Charlie &:/root:/bin/csh ^^^^^^^^ ここを削除 (5) パスワードデータベースを再構築します。 # ln -s /mnt/usr/lib* /usr # /mnt/usr/sbin/pwd_mkdb -p -d /mnt/etc /mnt/etc/master.passwd fixit.flp には pwd_mkdb(8) が入ってないので、共有ライブラリを準備 してシステムのものを利用します。もし CDROM を使えるときは、単に次 のように実行すれば良いでしょう。 # pwd_mkdb -p -d /mnt/etc /mnt/etc/master.passwd (6) 終了。あとでパスワードを再設定するのを忘れずに。 # reboot
グループ名: boot-s