rootユーザーのシェルを間違ったファイルパスに変更するために「chsh」を使用するなど、愚かなことをしているとします。後でルートアカウントへのログインが突然失敗し、/bin/見つからないという内容が記載され、ログイン画面に戻ります。リカバリモードを使用する場合、またはLiveCDを挿入して/ etc / passwdを編集しない場合は、システムリカバリのオプションは何ですか?また、ホイールに他のユーザーがいないとしましょう(ただ楽しいですか?)。アイデア?
答え1
起動時にinit=/bin/bash
起動オプションに(または他の機能シェルへのパス)を追加します。これにより、シングルユーザーシェルに直接ドロップされます。この環境で項目をmount -o remount,rw /
変更する前に、次のことを行う必要があります。/etc/passwd
その後、再起動または実行してくださいexec /sbin/init 3
。いいえexit
カーネルパニック*が発生するため、Ctrl + Dを入力または押します。
2段階モード(initrdイメージを含む)でロードされるシステムによっては、この方法の別のバリエーションが必要になる場合があります。ブートオプションにが含まれていることを発見した場合、init=
最も重要なのはreal_init=
、配置する場所は/bin/bash
後者のパラメータ(例えば)でなければなりませんreal_init=/bin/bash
。
*この環境では、カーネルがシェルを次のように見なすためです。初期化プログラム- これはカーネルが知っている唯一のプロセスです。これは、カーネルが実行された瞬間に実行中のシステムを表します。カーネルにシャットダウンを指示せずにプロセスを突然シャットダウンすると、カーネルパニックが発生する可能性があります。 (急に周囲が暗くなって静かになったら慌てませんか?)
答え2
su
実行するシェルを使用して指定できます(他のユーザーがいないという意見でこれが不可能であることを暗示しようとしたかどうかはわかりませんwheel
)。
su -c /bin/bash
それ以外の場合、SSHデーモンがrootログインを許可している場合は、次のようにできます。
ssh root@localhost /bin/bash
たとえば、ブートローダでシェルをinitinit=/bin/ksh
または同様に設定することもできます。
答え3
init=/bin/bash
カーネルパラメータのリアルタイム編集を許可するようにブートローダが設定されている場合、解決策は再起動してシェルをinitプロセスとして使用することです。します/etc/passwd
。sync
init
答え4
上記の答えは素晴らしく、それを読んで何かを学びました。これらの方法の詳細を覚えておらず、再起動しても構わない場合は、いつでもLive CD展開を使用してシステムを起動して/パーティションをマウントし、/etc/passwdを編集して再起動できます。上記の解決策ほどエレガントではありませんが、覚えやすいです。