こんにちわ、八重花です👋
先日突然、EC2インスタンスでsudo su –ができなくなって地味にテンパったので対処法のメモを残します。
参考になれば幸いです。
エラー「 sudo: /usr/bin/sudo be owned by uid 0 and the setuid bit set 」
$ sudo su -
>> sudo: /usr/bin/sudo be owned by uid 0 and the setuid bit set
AWSコンソールにログインし、EC2インスタンス一覧から該当のEC2を選択後、右上の「接続」からセッションマネージャー使って接続。
その後、ルートユーザーに切り替えるためにsudo su –を実行したところ発生。
原因は/usr/bin/sudo の所有者が root:root ではないことですが、
私の環境では「root:root」だったんですよね、、、
突然起きたので、ちょっと焦りました。
環境
- Amazon Linux 2(RedHatベースのディストリビューション)
- t3.micro
対処法
EC2を停止してユーザーデータを編集し、EC2を起動します。
※終了保護を有効にすることをお忘れなく!
※バックアップとしてAMIも必要に応じて作成してください!
このようにユーザーデータを編集します👇

RedHat ベースの場合
この対処法は以下のページを参考にしました。
EC2 Linux インスタンスで sudo コマンドを実行できないのはなぜですか?
Content-Type: multipart/mixed; boundary="//"
MIME-Version: 1.0
--//
Content-Type: text/cloud-config; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment; filename="cloud-config.txt"
#cloud-config
cloud_final_modules:
- [scripts-user, always]
--//
Content-Type: text/x-shellscript; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment; filename="userdata.txt"
#!/bin/bash
PATH=$PATH:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:
rpm --setugids sudo && rpm --setperms sudo
--//
また、
Amazon Linux 2はRedHatベースなんですが、私の環境ではDebianベースのコードを実行してもうまくいきました。
ユーザーデータを修正したら、EC2を起動しましょう。
以上です。