Linux CentOS7 ユーザー追加と削除について

## 使用環境
```bash
[user01@localhost ~]$ ls -l /usr/sbin/useradd
-rwxr-xr-x. 1 root root 137616  8月  9  2019 /usr/sbin/useradd
```
```bash
[user01@localhost ~]$ cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)
```
### ルートユーザーへ変更
```bash
[user01@localhost ~]$ su
パスワード:
[root@localhost user01]# id
uid=0(root) gid=0(root) groups=0(root)
[root@localhost user01]# 
```
### 現在のユーザー一覧
```bash
[root@localhost user01]# cat /etc/passwd | tail

sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
ntp:x:38:38::/etc/ntp:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
user01:x:1000:1000:user01:/home/user01:/bin/bash
mysql:x:27:27:MariaDB Server:/var/lib/mysql:/sbin/nologin
zabbix:x:988:982:Zabbix Monitoring System:/var/lib/zabbix:/sbin/nologin
apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin
```
```bash
'user01:x:1000:1000:user01:/home/user01:/bin/bash'
```
## ユーザーを追加するコマンド
```bash
[root@localhost user01]# useradd Shirley
```
##### 追加されたことを確認する
```bash
[root@localhost user01]# cat /etc/passwd | tail

avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
ntp:x:38:38::/etc/ntp:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
user01:x:1000:1000:user01:/home/user01:/bin/bash
mysql:x:27:27:MariaDB Server:/var/lib/mysql:/sbin/nologin
zabbix:x:988:982:Zabbix Monitoring System:/var/lib/zabbix:/sbin/nologin
apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin
'Shirley:x:1002:1002::/home/Shirley:/bin/bash'
```
## ユーザーのパスワードを設定する
```bash
[root@localhost user01]# passwd Shirley
ユーザー Shirley のパスワードを変更。
新しいパスワード:
よくないパスワード: このパスワードには一部に何らかの形でユーザー名が含まれています。
新しいパスワードを再入力してください:
passwd: すべての認証トークンが正しく更新できました。
```
```bash
よくないパスワード: このパスワードは辞書チェックに失敗しました。 - 単純/系統的すぎます
```
パスワードポリシーに準拠していないと上記メッセージなどが表示されるが、再入力すれば設定は可能。

```bash
Shirley:x:1002:1002::/home/Shirley:/bin/bash
```
表示されている情報 : で区切られている
|  | 項目 |   情報   |
|:---|:---|:---|
| 1 |ユーザー名| Shirley|
| 2 |ダミーパスワード | x |
| 3 |ユーザーID |1002|
| 4 |グループID |1002|
| 5 |コメント |空白|
| 6 |ホームディレクトリ |/home/Shirley|
| 7 |シェル |bin/bash|

## パスワードの詳細情報
```bash
[root@localhost user01]# cat /etc/shadow | tail
sshd:!!:19330::::::
avahi:!!:19330::::::
postfix:!!:19330::::::
ntp:!!:19330::::::
tcpdump:!!:19330::::::
user01:$6$MEXas/0QYtMA7qc4$SiQUbFsKiwvOZcNjfDtUV562nkmFvbqwCHcVAkmwhmk43t.1LMj8p8kiQ20MrsoCJ0vZBDGylDeq2rX2mHO.x0::0:99999:7:::
mysql:!!:19380::::::
zabbix:!!:19380::::::
apache:!!:19380::::::
Shirley:$6$JPF.3Dac$CyDNnI6VHveZcYmR2myNHqUbRwEKaI6CKaacIfh6wh6kYO64aypJp09iYv2FSPCS3koATdcA4lPVQH4a.Yqtc1:19450:0:99999:7:::
```
|  | 項目 |   情報   |
|:---|:---|:---|
| 1 |ユーザー名| Shirley|
| 2 |パスワード | 暗号化 |
| 3 |最終パスワード更新日 |19450|
| 4 |パスワード変更可能日 |0|
| 5 |パスワード有効期限 |99999|
| 6 |パスワード有効期限前の警告通知 |7|
| 7 |*アカウント無効までの日数 |空白|
| 8 |**アカウント有効期限|空白|

*アカウント有効期限後にパスワードを変更しなかった場合にアカウントが無効になるまでの日数
**アカウントが使用不可能になるまでの日数
```bash
useradd -e 
'ユーザーのアカウントが期限切れとなる日付を指定する'
useradd -f 
'ユーザーのパスワードが期限切れになってからアカウントが無効化されるまでの日数'
```
### ユーザーの変更
```bash
[root@localhost user01]# su Shirley
[Shirley@localhost user01]$ 
[Shirley@localhost user01]$ 
```
## ユーザーの削除
```bash
[root@localhost user01]# userdel -r Shirley
userdel: user Shirley is currently used by process 22328
```
先ほどユーザー変更したので、プロセスが起動したままだと削除できないと怒られた。
```bash
[root@localhost user01]# 
[root@localhost user01]# su Shirley
[Shirley@localhost user01]$ 
[Shirley@localhost user01]$ 
[Shirley@localhost user01]$ exit
exit
[root@localhost user01]# 
```
これでもプロセスは起動したままだったので
プロセス一覧で確認する。
```bash
[root@localhost user01]# ps -ax | tail

 22386 ?        S      0:00 [kworker/0:0]
 22524 pts/0    S      0:00 su
 22531 pts/0    S      0:00 bash
 22674 ?        S      0:00 [kworker/0:2]
 22722 ?        S      0:00 [kworker/u256:0]
 22726 ?        S      0:00 [kworker/1:2]
 22943 ?        R      0:00 [kworker/0:1]
 22953 ?        S      0:00 [kworker/1:1]
 22980 ?        S      0:00 sleep 60
 22986 pts/0    R+     0:00 ps ax
[root@localhost user01]# userdel -r Shirley
userdel: user Shirley is currently used by process 22328
```
PID(プロセスID)を調べて
`kill`コマンドで停止
```bash
[root@localhost user01]# kill 22328
[root@localhost user01]# 
[root@localhost user01]# ps -ax |tail
 22524 pts/0    S      0:00 su
 22531 pts/0    S      0:00 bash
 22674 ?        S      0:00 [kworker/0:2]
 22722 ?        S      0:00 [kworker/u256:0]
 22726 ?        S      0:00 [kworker/1:2]
 22943 ?        S      0:00 [kworker/0:1]
 22953 ?        S      0:00 [kworker/1:1]
 23062 ?        S      0:00 sleep 60
 23068 pts/0    R+     0:00 ps -ax
 23069 pts/0    S+     0:00 tail
[root@localhost user01]# 
```
表示が消えたことを確認
したけど、削除できなかった。
```bash
[root@localhost user01]# userdel -r Shirley
userdel: user Shirley is currently used by process 22328
[root@localhost user01]# exit
exit
[Shirley@localhost user01]$ exit
exit
[root@localhost user01]# exit
exit
[user01@localhost ~]$ su
パスワード:
[root@localhost user01]# userdel -r Shirley
[root@localhost user01]# 
```
もう一つシェル開いてたみたいだ...
`userdel` は `-r` をつけないとホームディレクトリなどが残ってしまうので注意。

## 

終わり。