シングルユーザモードのときは、パスワードを求められないものと思っていたが、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