主要メッセージの手引き

su: シェルがありません。

原因

このメッセージは、誰かが、ルート用のデフォルトのログインシェルを、システムに存在しないプログラムに変更したことを示します。たとえば、/etc/passwd 内の最後のコロンで区切られたフィールドが /sbin/sh から存在しない /usr/bin/bash に変更された可能性があります。または、行末に余分な空白が付けられている可能性があります。結果的に、root としてログインしたり、ユーザーを root に切り替えたりすることができなくなるため、この問題を直接解決できません。

対処方法

唯一の解決方法は、別の媒体からシステムをリブートして、パスワードファイルを編集し、この問題を解消することです。sync(1M) を何度か呼び出してから、Stop-A と入力するかまたはリセットボタンを押してマシンを停止します。プロンプトで boot cdrom -s と入力して、CD-ROM、ネットワーク、またはフロッピーディスクからシングルユーザーとしてリブートします。

システムが立ち上がって # プロンプトが表示されたら、下記に示すような mount(1M) コマンドを使用して、オリジナルの root パーティションに対応するデバイスをマウントします。次に、新たにマウントしたシステムのパスワードファイルでエディタを実行します (端末のサポートがない場合は ed(1) を使用します)。


# mount /dev/dsk/c0t3d0s0 /mnt
# ed /mnt/etc/passwd
エディタを使用してパスワードファイルの root エントリを変更し、/usr/bin/csh または /usr/bin/ksh などの存在するシェルを呼び出します。

テクニカルノート

No shell」の障害が発生しないようにするには、パスワードファイルを編集する際には admintool または /usr/ucb/vipw を使用するように習慣付けます。これらのツールを使用すると、システムが使用不能になるようなパスワードエントリに変更することが難しくなります。