CodlessCode
AWS

【解決】 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を起動します。

終了保護を有効にすることをお忘れなく!
バックアップとしてAMIも必要に応じて作成してください!

このようにユーザーデータを編集します👇

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

 
 

以上です。