【解決】EC2でsudo出来ない[sudo: /usr/bin/sudo be owned by uid 0 and the setuid bit set]
先日突然、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を起動します。
以下のようにしてユーザーデータ編集まで進みます。

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を起動しましょう。
以上です。