定時帰る術-Linuxユーザー管理（useradd、groupadd系コマンド）


### useraddのデフォルト設定を確認する
```
[root@mgmt ~]# useradd -D
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes
```

「/etc/skel」について
/etc/skel配下に格納されているファイルが、新しい追加ユーザーのhomeディレクトリ配下に格納される

```
[root@mgmt ~]# ll -a /etc/skel
合計 24
drwxr-xr-x.   2 root root   62 12月 15  2022 .
drwxr-xr-x. 117 root root 8192 10月 20 17:32 ..
-rw-r--r--.   1 root root   18  6月 20  2022 .bash_logout
-rw-r--r--.   1 root root  141  6月 20  2022 .bash_profile
-rw-r--r--.   1 root root  376  6月 20  2022 .bashrc
```
/etc/skel配下に新しいファイルを作る
```
[root@mgmt ~]# touch /etc/skel/snow
[root@mgmt ~]# ll -a /etc/skel
合計 24
drwxr-xr-x.   2 root root   74 10月 21 16:12 .
drwxr-xr-x. 117 root root 8192 10月 20 17:32 ..
-rw-r--r--.   1 root root   18  6月 20  2022 .bash_logout
-rw-r--r--.   1 root root  141  6月 20  2022 .bash_profile
-rw-r--r--.   1 root root  376  6月 20  2022 .bashrc
-rw-r--r--    1 root root    0 10月 21 16:12 snow
```
テストユーザーを追加し、ホームディレクトリを確認
```
[root@mgmt ~]# useradd snowtest1
[root@mgmt ~]# ll -a /home/snowtest1/
合計 12
drwx------  2 snowtest1 snowtest1  74 10月 21 16:14 .
drwxr-xr-x. 5 root      root       50 10月 21 16:14 ..
-rw-r--r--  1 snowtest1 snowtest1  18  6月 20  2022 .bash_logout
-rw-r--r--  1 snowtest1 snowtest1 141  6月 20  2022 .bash_profile
-rw-r--r--  1 snowtest1 snowtest1 376  6月 20  2022 .bashrc
-rw-r--r--  1 snowtest1 snowtest1   0 10月 21 16:12 snow
```



### ユーザー追加/グループ追加

ユーザー追加するのに、グループも必要となり、グループから追加する手順となる。
（グループを追加しなくても、自動的にユーザー名と同じ名前のグループが追加される）

ユーザー変更(usermod)/グループ変更(groupmod)の使い方はユーザー追加/グループ追加と大体同じ考えたでいいだろうということで、ここで略す



追加する前の確認
```
[root@mgmt ~]# grep 1111 /etc/passwd /etc/group
```
追加されることを確認(グループがない場合)
```
[root@mgmt ~]# useradd --uid 1111 snowtest2
[root@mgmt ~]# grep 1111 /etc/passwd /etc/group
/etc/passwd:snowtest2:x:1111:1111::/home/snowtest2:/bin/bash
/etc/group:snowtest2:x:1111:
```
追加する前の確認
```
[root@mgmt ~]# grep 1112 /etc/passwd /etc/group
```
グループ作成
--gidでグループIDを指定する
```
[root@mgmt ~]# groupadd --gid 1112 snow-test-group
[root@mgmt ~]# grep 1112 /etc/passwd /etc/group
/etc/group:snow-test-group:x:1112:
```
ユーザー作成
--uid:ユーザーID
--gid:グループID
-c:コメント
-s:ログインシェル
```
[root@mgmt ~]# useradd --uid 1112 --gid 1112 -c 'snow test user' -s /sbin/nologin  snowtest3
[root@mgmt ~]#
[root@mgmt ~]# grep 1112 /etc/passwd /etc/group
/etc/passwd:snowtest3:"x":1112:1112:snow test user:/home/snowtest3:/sbin/nologin
/etc/group:snow-test-group:"X":1112:
```
(表示上のことで"x"の「"」を付けたが、実際には「"」がない)


### ユーザー削除/グループ削除
-rを付けないとホームディレクトリが削除されない
```
[root@mgmt ~]# ll -d /home/snowtest3
drwx------ 2 snowtest3 snow-test-group 74 10月 22 07:02 /home/snowtest3
[root@mgmt ~]#
[root@mgmt ~]# userdel -r snowtest3
[root@mgmt ~]# ll -d /home/snowtest3
ls: '/home/snowtest3' にアクセスできません: そのようなファイルやディレクトリはありません
[root@mgmt ~]#  grep 1112 /etc/passwd /etc/group
/etc/group:snow-test-group:x:1112:
[root@mgmt ~]# groupdel snow-test-group
[root@mgmt ~]# grep 1112 /etc/passwd /etc/group
```

### /etc/passwdの見方

「:」で区切って見ればOK

例：
```
snowtest3:x:1112:1112:snow test user:/home/snowtest3:/sbin/nologin
```
ユーザー名：パスワード:ユーザーID：グループID：コメント：ホームディレクトリ：ログインシェル
（/etc/passwdのXだが、昔では、パスワードが記載され、何かがあって、パスワードを/etc/shadowに移行した記憶。今は/etc/passwdにxに固定され、実際のパスワードが/etc/shadowに保存されている（暗号化後））
ログインシェルを指定しない場合、「/bin/bash」となる。
↑での「/sbin/nologin」は、ログインできないということで、samba専用ユーザーに最適かもしれない
/etc/groupも同じ考え方でいいだろう

### /etc/shadow見方
/etc/shadowは、パスワードポリシーに関する情報があり、具体的な内容はgoogle先生に聞けばと思う
ここではパスワードについて話したいと思う
第2フィールドが暗号化後のパスワードとなり、そのパスワードそのままでコピーしても利用できる
（システム移行する際によくやる方法）
また、パスワードの前に「!!」に付けることもがある、ロック(passwd -l)されているという意味
root:$6$jqGrH.QyRi45UUfe$fjla7LYArfMOas9oS9qkyWxqStFlO.g7mxj0rWwzT3I8mlEjrNYiTACPN2y71g0qiZcsn2iOCxsr9yPzi3OdW0::0:99999:7:::