【Linux】ユーザーの作成・設定値変更(/etc/default/useradd)

# ユーザーの作成について
ユーザーを作成したい場合に、`useradd`コマンドを使用します。
`useradd 作成したいユーザー`と実行する事でユーザーが作成されます。

コマンドが実行出来れば、`/etc/passwd`や`/etc/shadow`にユーザー情報が反映されます。
設定によりますが、ホームディレクトリも作成されていると思います。(デフォルトの設定であれば、`/home`配下に作成されていると思われます。)

```shell_session:ユーザーの作成
[root@localhost ~]# useradd test_user
[root@localhost ~]# id test_user
uid=1002(test_user) gid=1002(test_user) groups=1002(test_user)
[root@localhost ~]# tail -1 /etc/passwd
test_user:x:1002:1002::/home/test_user:/bin/bash
[root@localhost ~]# tail -1 /etc/shadow
test_user:!!:19447:0:99999:7:::
[root@localhost ~]# ll /home
drwx------  2 test_user test_user   62  3月 31 16:05 test_user
```

`useradd`コマンドには、`/etc/default/useradd`にデフォルトで使用される設定値があります。
`useradd 作成したいユーザー`で実行した場合は、上記の設定値をもとにユーザーが作成されます。

この設定値については、`/etc/default/useradd を閲覧する Or useradd -D`で確認する事が出来ます。

```shell_session:デフォルトの設定値
[root@localhost ~]# useradd -D
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes

[root@localhost ~]# cat /etc/default/useradd
# useradd defaults file
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes
```


# 設定値の編集
設定値は以下のような項目がございます。
この設定値を編集する事で、どのような挙動になるのかを確認したいと思います。
※INACTIVE・EXPIRE・SKELを除く。(INACTIVE・EXPIREは後日検証予定です。SKELは雛形が置いてある場所を指定しているだけなので、検証しません。)

| 項目 | 説明 |
|---|---|
| GROUP | ユーザー作成時のグループID |
| HOME | ホームディレクトリの場所 |
| INACTIVE | パスワードの使用期限が過ぎて、アカウントが使えなくなるまでの日数 |
| EXPIRE | アカウント失効日 |
| SHELL | ログインシェル |
| SKEL | ファイルの雛形が配置されている場所 |
| CREATE_MAIL_SPOOL | メールスプールの作成 |

## GROUPの変更
`/etc/login.defs`ファイルの`USERGROUPS_ENAB`の値を`no`に変更します。※yesだと、ユーザーとグループが同時に生成されます。

試しに、`USERGROUPS_ENAB yes`の状態でユーザーを作成致しました。

```shell_session:USERGROUPS_ENAB yes の場合
[root@localhost /]# cat /etc/login.defs | grep "USERGROUPS_ENAB"
USERGROUPS_ENAB yes
[root@localhost /]# useradd test_user
[root@localhost /]# id test_user
uid=1002(test_user) gid=1002(test_user) groups=1002(test_user)
```

`no`に変更後に、ユーザーを追加致しました。
グループIDが100となっています。これは、`GROUP`の値が100となっている為です。

```shell_session:USERGROUPS_ENAB no の場合
[root@localhost /]# cat /etc/login.defs | grep "USERGROUPS_ENAB"
USERGROUPS_ENAB no
[root@localhost /]# useradd test_user
[root@localhost /]# id test_user
uid=1002(test_user) gid=100(users) groups=100(users)
[root@localhost /]# useradd -D | grep "GROUP"
GROUP=100
```

## HOMEの変更
`HOME`の設定を`/test`に変更してみます。
`/test`配下に、ホームディレクトリが作成された事を確認しました。

```shell_session:HOME 値変更
[root@localhost /]# cat /etc/default/useradd | grep "HOME"
HOME=/test
[root@localhost /]# useradd test_user
[root@localhost /]# ll /test
合計 0
drwx------ 2 test_user test_user 62  4月  6 00:04 test_user
```

## SHELLの変更
`SHELL`の設定を`/bin/sh`に変更してみます。
`/bin/sh`となっている事を確認しました。

```shell_session:HOMEの変更
[root@localhost ~]# useradd -D | grep "SHELL"
SHELL=/bin/sh
[root@localhost /]# useradd test_user
[root@localhost ~]# su - test_user
最終ログイン: 2023/04/06 (木) 02:18:28 JST日時 pts/0
-sh-4.2$ echo $SHELL
/bin/sh
```

## CREATE_MAIL_SPOOLの変更
`CREATE_MAIL_SPOOL`の設定を`no`に変更します。
メールのファイルが生成されていない事を確認しました。

```shell_session:CREATE_MAIL_SPOOLの変更
[root@localhost /]# useradd -D | grep "CREATE_MAIL_SPOOL"
CREATE_MAIL_SPOOL=no
[root@localhost /]# useradd test_user
[root@localhost /]# cd /var/spool/mail
[root@localhost mail]# ll
合計 8
-rw-------. 1 root    mail 6784  3月 26 22:23 root
```