82759
「AWSをはじめよう」という本でEC2サーバーの構築について勉強しています。  
本ではCentOSベースのAmazon Linuxを使っていますが、ローカルのWSLでUbuntuを使い慣れているのでUbuntuを使いました。  
規定のアカウント名ubuntuでSSH接続するところまで出来ています。

本では以下のコマンドでrootになってみましょうみたいなことを言われましたが、UbuntuのEC2でこれをやるとパスワードを聞かれました。

```

    $ su -
    
```

`sudo` でroot権限のコマンド（`apt update` など）は（パスワードなしで）実行できますが、それだけで学習しつづけられるでしょうか。  
Amazon Linux、Ubuntu、suのパスワード、sudoのパスワードについて特に知るべきことはあるでしょうか。
CC BY-SA 4.0
2021-09-29T06:46:15.843
82749
2021-09-29T19:22:24.857
2021-09-29T08:21:56.557
3060
26673
question
linux ubuntu amazon-ec2 amazon-linux
Amazon EC2 で Ubuntu を作ると「su -」でパスワードを聞かれる
参照している書籍ではどのような意図で「`su -` で root になってみよう」としているのか分かりませんが、root 権限 (=管理者権限)
が必要なら通常は `sudo` での運用で十分です。

* * *

`su -` で root アカウントに切り替えようとした場合、「root アカウントのパスワードを知っている」「 **root
アカウントにパスワードが設定されている** 」必要があります。

EC2 のインスタンスで作成したマシンには、root パスワードが設定されていないようなので、例えば以下のような手順で設定しておく必要があります。

**参考:**  
[AWSの初期設定でrootパスワードを設定する](https://qiita.com/shanonim/items/5496e0c6f6bf09e76f7c)

  * 一般ユーザーでログイン
  * `sudo su -` で root 権限に昇格
  * `passwd` コマンドで root アカウントにパスワードを設定
CC BY-SA 4.0
2021-09-29T11:22:38.757
82759
2021-09-29T11:22:38.757
3060
82749
answer
> Amazon EC2 で Ubuntu を作ると「su -」でパスワードを聞かれる

手元の環境の Ubuntu 20.04/21.04 の場合、PAM(Pluggable Authenticaton
Modules)によって設定を変更することが可能です。

#### `/etc/pam.d/su`

> # Uncomment this if you want wheel members to be able to  
>  # su without a password.  
>  #auth sufficient pam_wheel.so trust

Ubuntu Linux の場合、デフォルトの設定では `wheel` グループが存在しません。`wheel`
グループを作成しても良いかと思いますが、管理者グループということで既存の `adm` グループに設定してみます。

```

    auth       sufficient pam_wheel.so trust group=adm
    
```

```

    $ lsb_release -ir
    Distributor ID: Ubuntu
    Release:    20.04
    
    $ id
    uid=1000(nemo) gid=50(staff) groups=50(staff)
    $ su -
    Password: 
    
    $ sudo usermod -a -G adm nemo
    
    $ id
    uid=1000(nemo) gid=50(staff) groups=50(staff),4(adm)
    $ su -
    root@host-0-0-0-0:~# id
    uid=0(root) gid=0(root) groups=0(root)
    
```

> sudo でroot権限のコマンド（apt update など）は（パスワードなしで）実行できますが、

#### `sudo(1)`

> **-i, --login**
>
> Run the shell specified by the target user's password database entry as a
> login shell. This means that login-specific resource files such as .profile,
> .bash_profile or .login will be read by the shell.
```

    $ sudo -i
    root@host-0-0-0-0:~# id
    uid=0(root) gid=0(root) groups=0(root)
    
```

> Amazon Linux、Ubuntu、suのパスワード、sudoのパスワードについて特に知るべきことはあるでしょうか。

PAM(Pluggable Authenticaton Modules)
については知っておいても損はしないでしょう(得をするという保証はありませんけれども)。

```

    $ man -k pam
    PAM (7)              - Pluggable Authentication Modules for Linux
    capability.conf (5)  - configuration file for the pam_cap module
    faillock.conf (5)    - pam_faillock configuration file
    group.conf (5)       - configuration file for the pam_group module
    limits.conf (5)      - configuration file for the pam_limits module
    pam (5)              - portable arbitrary map file format
    pam (7)              - Pluggable Authentication Modules for Linux
    pam-auth-update (8)  - manage PAM configuration using packaged profiles
    pam.conf (5)         - PAM configuration files
    pam.d (5)            - PAM configuration files
    pam_access (8)       - PAM module for logdaemon style login access control
                      :
    
    
```
CC BY-SA 4.0
2021-09-29T19:22:24.857
82765
2021-09-29T19:22:24.857
47127
82749
answer