経歴:ノードを実行するためにPHPを取得しようとしましたが、おそらく必要以上のファイルとフォルダーのアクセス許可/所有権を変更することになりました。
ある時点で、/etc/sudoers/
を設定するようにDefaults requiretty
を変更するという誰かの提案に出くわしました。 nano
しようとしましたが、できませんでした。それで私はSudo chown ec2-user /etc/sudoers
のアイデアを思いつき、それ以来この問題に悩まされてきました。
Nanoに戻ってテキストの変更を元に戻すことができましたが、ファイルの所有権が問題の原因になっています。
私は彼がここで最も一致する答えられた質問はこれだと思います:
AmazonWebサービスec2linux centOSでSudoが壊れています (ただし、これは解析エラー、私が想定しているファイルのタイプミスに関連しています)。
どうすればこれを修正できますか?このEC2インスタンスを永久に台無しにしましたか?
アマゾンのドキュメントを読むことは役に立ちましたが(@Ouroborusの回答によると)、私はついに自分が陥ったこの混乱を修復する方法を見つけました。
すべての手順を思い出せるかどうか見てみましょう...
新しいインスタンスを準備する
既存のインスタンスを可能な限り一致させる最も簡単な方法は、My AMIの下に移動し、問題のインスタンスで使用されているのと同じAMIイメージを選択することです。
これはリカバリを目的とした単なるインスタンスであるため、Freeインスタンスタイプを選択します。
このステップは非常に重要です!このリカバリインスタンスのサブネットマスクを問題のインスタンスと一致させてください(そうしないと、問題のEBSをリカバリインスタンスにマウントできません!難しい方法で見つかりました...)
[次へ:ストレージの追加]をクリックし、そのページをそのままにして、[次へ:タグインスタンス]をクリックします。
[値]フィールドに「リカバリ」のように入力します(どのような名前でもかまいません。私の場合は、このインスタンスの目的をマークするだけです)。
インバウンド/アウトバウンドセキュリティグループを作成するように求める最後のステップ/ポップアップが1つあるはずです。問題のインスタンスに対してすでに設定されているものと同じものを選択してください。つまり、同じSSHキーファイルを再利用して、このインスタンスにログインできます(PuTTYまたは任意のプログラムを介して)。
/dev/xvda
)。次に、[EBSボリューム]セクションに移動します。
問題のあるインスタンスに現在接続されているボリュームをアンマウントします(右端の列の1つにstoppedとしてマークされたインスタンスのステータスが表示されます)。
ボリュームを新しいリカバリインスタンスにマウントします(リストにリカバリインスタンスが表示されない場合は、上記の「サブネット」手順を見逃した可能性があります。そのサブネットに一致するように、リカバリインスタンスをもう一度やり直す必要があります。設定)。
更新し、リカバリインスタンスで「使用中」になっていることを確認します。
次に、楽しいコマンドラインの手順に進みます。
ログイン/ SSHでリカバリボックスにログインします(AWSのインスタンスセクションでリカバリインスタンスのIP /ホストアドレスを検索できます)。
現在の作業ディレクトリをルートに設定します。cd /
問題のあるEBSボリュームを保持するディレクトリを作成します。Sudo mkdir bad
マウント:Sudo mount /dev/xvdf /bad
(注:これが機能しない場合は、私と同じ問題が発生している可能性があるため、代わりに次のことを試してください:Sudo mount /dev/xvdf1 /bad
、この回答のおかげで https ://serverfault.com/a/632906/356372 )。
それがうまくいけば、その/bad
ディレクトリにcdして、通常と同じファイル構造を見ることができるはずです。元の(現在問題のある)インスタンスにマウントされています。
非常に重要次のいくつかの手順で、権限の変更を示すために./etc
ではなく/etc
を使用していることに注意してください。このリカバリEBSボリュームではなく、/bad/etc/sudoers
ファイルの所有権です。壊れたボリュームは1つで十分ですよね?
試してみてください:cd /bad
ls -l ./etc/sudoers
...次に、次のようにします。stat --format %a ./etc/sudoers
このファイルの所有権やchmod
値が実際に正しくないことを確認してください。
chown
の所有権を修正するには、次のようにします。Sudo chown root:root ./etc/sudoers
chmod
値を修正するには、次のようにします。Sudo chmod 0755 ./etc/sudoers
今では、手順を逆にするだけです!
それが終わったら、マウントを解除する時間:cd /
Sudo umount /bad
AWS設定ページに戻り、「EBSボリューム」セクションに移動します。
available
であることを確認します。/dev/whatever/
ボリュームパスを使用してください)。in-use
であることを確認します。Sudo
を使用できるようになります。それがあなたのためにも働いたならおめでとう!
そうでなければ....私はそうです....とても申し訳ありませんがこれはあなたに起こっています:(
ええ、あなたはそれを本当にうまく壊しました。所有権のためにSudoを実行することはできず、AmazonのインスタンスはSudoアクセスなしでrootを許可しないように設定されています。
インスタンスの再起動が機能しなかった場合は、行った変更がアタッチしたEBSボリュームに保存されます。これを修正するには、別の新しいインスタンスを起動し、それを使用して、中断されたファイルがあるEBSボリュームをマウントおよび変更する必要があります。これを行うことは Amazon自身のドキュメントでここに説明されています および リンクした質問への回答に要約されています です。
これを修正した後、/etc/sudoers
を再度編集する前に、/etc/sudoers
がプリロードされたエディターにユーザーを配置するツールである visudo
を読んでください。保存する前にサニティチェックを実行します。