EC2のLinuxインスタンスでrootになる

はじめに

AWSのLinux系EC2インスタンスはデフォルトではrootユーザでログインできません。
そのためrootユーザの権限が必要な操作をすると、以下の感じのエラーで怒られます。

  • [ec2-user@ip-172-31-0-1 ~]$ mkdir /var/test
    mkdir: cannot create directory ‘/var/test’: Permission denied

そんな時は、

rootユーザになる

以下のコマンドでrootユーザーになれます。

  • [ec2-user@ip-172-31-0-1 ~]$ sudo su -

これでさっき怒られた操作もバッチリできます。

  • [ec2-user@ip-172-31-0-1 ~]$ mkdir /var/test

Amazon Linux でも Red Hat Enterprise Linux でも Ubuntuでも同じようにrootになれます。

 
以下、sudo su – が何やってるかについての補足です。

sudo su – って?

sudoは別のユーザの権限で任意のコマンドを実行するコマンドです。-uオプションでユーザ名を指定しないとrootユーザとしてコマンドを実行するという意味になります。

suは現在のユーザを変更するコマンドです。ユーザ名を指定しないとrootユーザになるという意味になります。

なので sudo su – がやってることを日本語で書いてみると

rootユーザの権限で su – を実行する。
つまり
rootユーザの権限で 現在のユーザをrootユーザに変更する。

ということになります。

 

suの後の -(ハイフン)って?

suの後に-(ハイフン)がなくても別ユーザになれますが、-(ハイフン)の有無で以下の差異があります。

  • -(ハイフン)あり -> 変更後のユーザの環境が設定される
  • -(ハイフン)なし -> 現在のユーザの環境が設定される

どういうことかというと、

例えば以下のようにec2-userで環境変数FOOを設定している状態で、

  • $ whoami 
    ec2-user
    $ export FOO=bar
    $ env | grep FOO
    FOO=bar
    

su ハイフンなしで実行してみると(rootになる)、↑でec2-userで設定した環境変数FOOがrootになった後も見えます。

  • $ sudo su
    $ whoami
    root
    $ env | grep FOO
    FOO=bar
    

su –(ハイフンあり)で実行してみると(rootになる)、ec2-userで設定した環境変数FOOが見えません。

  • $ sudo su - 
    $ whoami
    root
    $ env | grep FOO
    

このようにハイフンの有無で変更後のユーザの環境が設定されるか現在のユーザの環境が引き継がれるかの差異があります。詳しくはman suで確認できます。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA