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で作業するのに比べると、はるかに心理的な負担が軽減されます。