はじめに
EC2 AL2のデフォルト設定ではrootにスイッチできないということがありました。
そのため、記事にまとめました。
※amazon linux2のことをAL2と記載させて頂きます。
rootにスイッチするには2パターンあります。
rootのパスワードを入力してrootにスイッチする
AL2ではデフォルトでrootユーザーのパスワード設定をしていません。
$ su -
ログインユーザーのパスワードを入力してrootにスイッチする
※上記の場合はwheelグループに所属している必要があります。
$ sudo su -
検証した結果
su -でrootにスイッチする場合
AL2のrootユーザーはデフォルトではパスワード設定する必要があります
そのため、su -でrootにスイッチする際は、rootユーザーのパスワードの入力が求められるため、
パスワード設定をする必要があります。
AL2のデフォルトのrootユーザーの設定を以下に貼りました。
※以下はec2-userでsudo su -してrootにスイッチして作業しました。
[root@ip-10-0-23-181 ~]#cat /etc/passwd | grep root
root:x:0:0:root:/root:/bin/bash
※パスワードが設定されていません。
[root@ip-10-0-23-181 sudoers.d]# cat /etc/shadow | grep root
root:*LOCK*:14600::::::
パスワードを設定しました
[root@ip-10-0-23-181 ~]# passwd root
Changing password for user root.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
rootへスイッチした際のコマンドは以下です。
[ec2-user@ip-10-0-23-181 ~]$ su -
Password:
Last login: Mon Apr 10 23:51:51 UTC 2023 on pts/0
[root@ip-10-0-23-181 ~]# ※rootにスイッチしました。
sudo su -でrootにスイッチする場合
以下のサイトが参考になりました。
https://ex1.m-yabe.com/archives/5233
wheelグループに所属しているため、ec2-userはデフォルトでsudo su -が可能です
root@ip-10-0-23-181 ~]# id ec2-user
uid=1000(ec2-user) gid=1000(ec2-user) groups=1000(ec2-user),4(adm),10(wheel),190(systemd-journal)
testユーザーを新規で作成しました。
[root@ip-10-0-23-181 sudoers.d]# useradd test
[root@ip-10-0-23-181 sudoers.d]#
[root@ip-10-0-23-181 sudoers.d]# passwd test
Changing password for user test.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
testユーザーはwheelグループに所属していません。
[root@ip-10-0-23-181 ~]# id test
uid=1002(test) gid=1002(test) groups=1002(test)
sudoersの設定ファイルを確認したところ、wheelグループは許可されています。
[root@ip-10-0-23-181 sudoers.d]# cat /etc/sudoers | grep -v "^#" | grep -v "^$"
Defaults !visiblepw
Defaults always_set_home
Defaults match_group_by_gid
Defaults always_query_group_plugin
Defaults env_reset
Defaults env_keep = "COLORS DISPLAY HOSTNAME HISTSIZE KDEDIR LS_COLORS"
Defaults env_keep += "MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE"
Defaults env_keep += "LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES"
Defaults env_keep += "LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE"
Defaults env_keep += "LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY"
Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin
root ALL=(ALL) ALL
%wheel ALL=(ALL) ALL
testユーザーでsudo してみたところ、以下のメッセージが出てsudo出来ませんでした。
[test@ip-10-0-23-181 ~]$ sudo su -
We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:
#1) Respect the privacy of others.
#2) Think before you type.
#3) With great power comes great responsibility.
[sudo] password for test:
test is not in the sudoers file. This incident will be reported.
testユーザーをwheelグループに所属させました。
[root@ip-10-0-23-181 ~]# usermod -aG wheel test
グループにwheelが入っていることを確認しました。
[root@ip-10-0-23-181 ~]# id test
uid=1002(test) gid=1002(test) groups=1002(test),10(wheel)
testユーザーからrootへsudo出来ました。
[test@ip-10-0-23-181 ~]$ sudo su -
[sudo] password for test: ※testユーザーのパスワード入力
Last login: Mon Apr 10 23:53:34 UTC 2023 on pts/0
まとめ
AWS EC2でrootにスイッチする方法が2つあることが分かりました。
su -はrootユーザーのパスワード入力し、sudo su -はログインユーザーのパスワード入力することが分かりました。
私は普段sudo su -を使用しています。基本的なことのため、このあたりの知識はしっかりつけたいです。
ログインできない場合は、ログイン出来るユーザーでSSH接続して「/var/log/secure」のユーザー認証時に出力されるログをみると、
認証失敗のエラーが出ているため、確認が必要です。