RHELでシングルユーザモードのログインにパスワードを要求する

2008/02/04 | ラベル: , | このエントリーを含むはてなブックマークを表示

シングルユーザモードのときは、パスワードを求められないものと思っていたが、debianを使ってみてそうではないことを知った。sulogin と init (, inittab) がキーワード。

RHEL の sulogin の ManPage の説明。

sulogin は、シングルユーザモードの時、ユーザがシステムにアクセス可能となる前に、 /etc/init によって起動される。この機能は、init が適切に変更されているシステムか、あるいは /etc/inittab にシングルユーザ login のエントリがあるシステムでのみ利用できる。

... snip ...

このコマンドが利用できるようにするには、init が /bin/sh ではなく sulogin を呼ぶようになっているか、または inittab 中にシングルユーザ ログインに対する設定がされている必要がある。例えば、

co:s:respawn:/etc/sulogin /dev/console

という行を書いておけば、シングルユーザモードでは sulogin コマンドが実行される。

/etc/inittab の書式は id:runlevels:action:process なので、上記によれば /etc/sulogin が起動するプロセスになる。RHEL では /etc/sulogin はなく、/sbin/sulogin なので、正しくは以下。

co:s:respawn:/sbin/sulogin /dev/console   ・・・・・(1)

しかーし。上記ではうまく動かず。今度は init の ManPage を見てみる。ブートの項ではこう書かれている。

ランレベルを S または s にすると、システムはシングルユーザモードに入る。この場合は /etc/inittab ファイルを必要としない。シングルユーザモードでは、/dev/console で /sbin/sulogin が起動される。

さらに、ブートフラグの項ではこう書かれている。

ブートモニタ (例えば LILO) から init に様々なフラグを渡すことが可能である。 init は以下のようなフラグを受け付ける:

-s, S, single

シングルユーザモードでブートする。このモードでは /etc/inittab を
参照する。またシングルユーザモードのシェルが起動される前に
ブートアップ rc スクリプトが実行される。

まとめると、

  • ブートローダにオプションを渡してシングルユーザモードになるときは /etc/inittab が参照される
  • それ以外の場合は /etc/inittab は参照されない

となりそうだが、実際は常に /etc/inittab が参照されてるっぽい。本題の、「RHELでシングルユーザモードのログインにパスワードを求める」には、/etc/inittab にこう記述する。

~:S:wait:/sbin/sulogin   ・・・・・(2)

(1) ではだめで、(2) とすると期待した動きになる。

debian の場合、/etc/inittab に以下を記述するらしい(未確認)。

~~:S:wait:/sbin/sulogin

0 コメント: