Solarisでrootのログインシェルを誤って設定してしまったときの復旧

あろうことか、Solarisを触らないといけない状態になってしまったうえに、デフォルトログインシェルがあまりに使いづらいので/etc/passwdをいじってbashに変更したら、ログインできなくなってしまったのでメモ。

状況

/etc/passwdをエディタで直接書き換えて、rootのエントリで、ログインシェルとして/sbin/bashを指定。

これが原因で、次回以降のログイン時にパスワード入力後も「不正なログインシェルです」と表示されるだけでログインできなくなってしまった。

root以外のユーザがないマシンだったので、他のアカウントでログインすることもできず、困った。

解決方法

Sunのキーボードを使っていれば、左端の島に「Stop」キーがあるので、それとAキーを同時押し。

通称"OKシェル"モードに入るので、boot -sしてシングルモードで再起動。

しばらく待っているとコマンドラインのログイン画面になるので、rootのパスワードを入力。

shでログインできるので、適宜bash等作業しやすいシェルを起動(自分の環境では、「bash」だけでbashが起動できた)。

nanoエディタを入れてあれば、nano /etc/passwdとしてrootのエントリを元に戻す。nanoが入っていない場合は、vi /etc/passwdとして編集(viという、残念なエディタの使い方はこちら)。

(おまけ)nanoのインストール

ちなみに、Solaris用のnanoは、こちらからダウンロードできます。依存しているncurses, file, libiconv, libintl, gcc-3.4.6も一緒にダウンロードして、zipをほどいて、

pkgadd -d xxx-local

を順番に実行していくとインストールできます。/usr/local/binに入るので、.bashrc等で

export PATH=/usr/local/bin:$PATH

しておくとよいです。viで作業するのに比べると、はるかに心理的な負担が軽減されます。