【解決】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」だったんですよね、、、
突然起きたので、ちょっと焦りました。

環境

対処法

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

以上です。