Redhat をリモートで再起動してリカバリモードに入った後、SSH を実行する方法は?

Redhat をリモートで再起動してリカバリモードに入った後、SSH を実行する方法は?

仮想マシン上でリモートで実行されている RedHat ボックスのリカバリ モードに入る必要があります。

私は RedHat 5 64 ビット Enterprise Edition を使用しています。

SSH を使用してボックスにログインしています。restart コマンドを使用して再起動できますが、リモートで使用しており UI 経由でログインできないため、SSH で接続できるかどうかを知る必要があります。

本当の問題は、chown -R $USER /ルート ディレクトリで を実行したことです。

私は結果を理解せずにこれを試して、何かを機能させようとしましたが、どういうわけか sudo を使用しても機能しませんでした。

途中で強制終了してしまいました。しかし、この愚かさのせいで、sudo が使えません。

レスキュー モードで何かできることは読んだのですが、リモートでレスキュー モードに入る方法がわかりません。Linux を再インストールすることはできません。これは可能なオプションではありません。

sudo 権限を取り戻す方法はありますか?

現時点では、これを実行しても機能しません。

chown root:root /usr/bin/sudo
chown: changing ownership of `/usr/bin/sudo': Operation not permitted
sudo chown root:root /usr/bin/sudo
sudo: must be setuid root

答え1

ssh が実行されていないため、リカバリ モードに ssh することはできません。コンソールにアクセスする方法が必要です。これが仮想マシンで、ホストを所有している場合は、ホストに接続してコンソールにアクセスする方法があるはずです。これが AWS のようなサービスである場合は運が悪く、新しいインスタンスを構築して問題のあるインスタンスからルート ボリュームを切り離し、新しいインスタンスにマウントして修正するなど、別の方法でリカバリする必要があります。

答え2

Redhat はジョブの開始/停止に Systemd を使用します。

レスキュー モードの場合は、rescueまたはemergencyターゲットが使用されます。

これらのランレベル (systemd 用語ではターゲット) でも実行できるように sshd (およびその依存関係) を構成する必要があります。

ここsystemdの微調整についてさらに詳しく知ることができます。Redhatドキュメントも使用可能かもしれません。

答え3

問題は解決したので、この質問は閉じることができます。ただし、SSH 経由ではこれを行うことができませんでした。仮想ボックスのインスタンスをオフにして再起動する必要がありました。SSH 経由でこれを行うことは、まだ議論の余地があります。

rhel5 インスタンスを再起動して問題を解決する方法:

1.Boot the system into single user mode (do this by pressing esc on the boot screen. you will get a terminal on the boot screen after doing this)
2.do chmod 0440 /etc/sudoers
Which should look like -r--r----- 1 root root 5882 Nov 19 18:03 /etc/sudoers
3.chown root:root /usr/bin/sudo
4.chmod 4111 /usr/bin/sudo
5.chmod 0440 /etc/sudoers
6.chmod 0770 /var/bin/sudo/$USERNAME (note: you may have to use /var/run/sudo/$USERNAME if /var/bin does not exist)
7.Reboot the machine in runlevel-5. (type init 5)

これにより、rootにsetuidされ、sudoエラーが解決されます。

関連情報