4
3

More than 5 years have passed since last update.

EC2でsudoersの設定に失敗し、sudoが使えなくなったときの対応

Last updated at Posted at 2015-04-05

Goal

  • オペレーションミスによりEC2でsudoが使えなくなった問題を解消する
  • ちなみに、以下の条件でsudoのデッドロック状態が起こる
    • rootパスワードが分からない
    • /etc/sudoersまたは/etc/sudoers.d以下のファイルがシンタックスエラーになっている
    • /etc/sudoersまたは/etc/sudoers.d以下のファイルの編集権限がrootユーザのみ
      • sudoがエラーになるため、rootユーザになることができない
      • sudoers設定を変更しようにも、問題のファイルを変更も削除もできない

常識とは思いますが、この問題を避けるためにvisudoまたは、visudo -f /etc/sudoers.d/{sudo設定ファイル名}を使うべきです.
今回はプロビジョニング作業のため設定操作が手続き処理なので、visudo使うのが比較的難易度高いため/etc/sudoers.d以下にファイルを直接配置してしまってました.
(visudoのコマンドを使って、ChefできればItamaeでコマンド実行できるいい方法ご存知のかたいれば教えてください)

Manual

※ 対象サーバの停止が必須の手順です
※ 作業用のインスタンス1機の起動が必須です

スクリーンショット 2015-04-05 17.46.18.png

EC2 production: sudo不可になった問題のサーバ
EC2 inspection: sudoers修正するための作業用サーバ
EBS1 : 問題のsudoersファイルを抱えたブロックストレージ
EBS2 : 作業用サーバがデフォルトでマウントしているブロックストレージ

(1), (2)EBS1をEC2 inspectionにアタッチする

  • EC2 productionをShutdown
  • EC2 productionからEBS1をデタッチ
    • EC2管理画面のサイドバー Volumes > 対象のボリューム(EBS1)を選択 > Detach Volume
    • Detach前に、サーバが認識しているブロックデバイス名を確認しておく(/dev/xvda,/dev/sda1など)
  • EC2 inspectionを用意し、起動しておく
  • EC2 inspectionにEBS1をアタッチ
    • EC2管理画面のサイドバー Volumes > 対象のボリューム(EBS1)を選択 > Attach Volume
    • アタッチされたときのブロックデバイス名を確認しておく(/dev/xvdf1など)

(3)EC2 inspectionでファイルシステムにアクセスできるようマウント

# root@EC2 inspection

ls -l /dev/xvdf1
  # 新しいデバイスが認識されていることを確認
mkdir /emergency_mount
  # マウント先を作成しておく

mount -t ext4 /dev/xvdf1 /emergency_mount

mount
  # /emergency_mountにマウントされたことを確認
df
  # /emergency_mountにマウントされたことを確認
ls -l /emergency_mount/
  # ファイルツリーが見えていることを確認

(4)sudoersファイルを修正する

# root@EC2 inspection

vi /emergency_mount/etc/sudoers.d/test
  # 問題のファイルを修正する

(5),(6)EC2 productionとEBS1をひもづけ直す

  • EC2 inspectionからEBS1ブロックデバイスをumount
# root@EC2 inspection

umount /emergency_mount

mount
  # /emergency_mountがアンマウントされたことを確認
df
  # /emergency_mountがアンマウントされたことを確認
  • EC2 inspectionにアタッチしていたボリュームをデタッチ
  • EC2 productionに作業前と同じブロックデバイス名(/dev/xvda,/dev/sda1など)でアタッチし直す
    • これが間違っているとサーバ起動できません

Reference

4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3