linuxユーザ追加について検証してみた

# はじめに
LPICレベル1の勉強のため、linuxユーザ追加を検証してみました。
ついでに削除したユーザーの復元も試しました。

# 前提条件
VirtualboxでゲストOSを1台作成した

# linuxユーザー追加の手順

###  現在の登録されているユーザーを確認した
```
# cat /etc/passwd
出力結果
#デフォルトに入っているユーザー
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
chrony:x:998:996::/var/lib/chrony:/sbin/nologin
```
### グループを作成した

グループ名(testgroup)  グループID(1000)を作成した
```
$ sudo  groupadd -g 1000 testgrp
```
グループ名(testgroup)  グループID(1000)を確認した
```
$ sudo cat /etc/group | grep testgrp
testgroup:x:1000:
```

### ユーザー作成した
ユーザー名はtest3で登録した 
rootユーザーは必ず0であり、一般ユーザーは1000以降の番号が割り当てられるそうです。

新規ユーザーのuid(ユーザID)は1002で-g(グループID)1000を指定する。
```
$ sudo useradd -u 1002 -g 1000 -d /home/test3 test3
```

### test3ユーザーを登録されていないことを確認した
```
$ sudo cat /etc/passwd | grep test3
```
補足情報 grep -eでユーザーを複数指定して表示も可能
```
$ sudo cat /etc/passwd | grep -e test -e test2 -e test3
test:x:1000:1000:test:/home/test:/bin/bash
test2:x:1001:1001::/home/test2:/bin/bash
test3:x:1002:1001::/home/test3:/bin/bash
```

###  パスワード設定した
#### 事前のパスワード情報を確認した
vipw -sのコマンドでも、/etc/shadowファイルを編集モードで開きます。
パスワード設定前に、/etc/shadowを確認した

※パスワードが未設のため、パスワード情報が!!になっていることを確認した
```
$ sudo cat /etc/shadow  | grep test3
test3:!!:19821:0:99999:7:::
```
#### パスワードを設定した
```
$ sudo passwd test3
ユーザー test3 のパスワードを変更。
新しいパスワード:
新しいパスワードを再入力してください:
passwd: すべての認証トークンが正しく更新できました。
```
#### 事後のパスワード情報を確認した
```
$ sudo cat /etc/shadow | grep test3
test3:$6$ezIhEb0s$T1l0C3cXdeUt3S8VObRtBxEYu.YpX3t/OPo4SN62xxXZS/z5c38yBl6qJv6FnoXKwcY167yTO1HYpWHuUjS9C0:19821:0:99999:7:::
```
##  ssh鍵を生成した
#### test3ユーザーにスイッチした
```
$ su - test3
Password:
```
#### ssh鍵のパスフレーズ指定で鍵を生成した。
ホームディレクトリに移動する
```
$ cd ~
```
鍵を生成する　<パスフレーズ情報>は秘密鍵のパスワードです。任意な値をいれてください。
```
$ ssh-keygen -N <パスフレーズ情報>
Generating public/private rsa key pair.
Enter file in which to save the key (/home/test3/.ssh/id_rsa):
Created directory '/home/test3/.ssh'.
Your identification has been saved in /home/test3/.ssh/id_rsa.
Your public key has been saved in /home/test3/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:bKFZpqDU9PjaxN8pxoKeNLoFcftygBnIaNgxSEug3Q0 test3@localhost.localdomain
The key's randomart image is:
+---[RSA 2048]----+
|++o E            |
|B+.* =           |
|=+* * o +        |
|.. B = B .       |
|  = o B S        |
|   . B + . .     |
|    B = = o      |
|   = = o .       |
|  o.o            |
+----[SHA256]-----+
```
鍵が作成されたことを確認した
```
$ ls -tlra 

[test3@localhost ~]$ ls -ltra
合計 12
-rw-r--r--  1 test3 testgrp 231  4月  1  2020 .bashrc
-rw-r--r--  1 test3 testgrp 193  4月  1  2020 .bash_profile
-rw-r--r--  1 test3 testgrp  18  4月  1  2020 .bash_logout
drwxr-xr-x. 3 root  root     19  4月  8 23:57 ..
drwx------  2 test3 testgrp  38  4月  9 00:02 .ssh
drwx------  3 test3 testgrp  74  4月  9 00:02 .
```
鍵があることを確認する
```
cd .ssh

$ ls -tlr
合計 8
-rw-r--r-- 1 test3 testgrp  409  4月  9 00:02 id_rsa.pub　※公開鍵
-rw------- 1 test3 testgrp 1766  4月  9 00:02 id_rsa ※秘密鍵
```

#### 公開鍵を登録します。
```
$ pwd 
/home/test3/.ssh
$ cat id_rsa.pub > authorized_keys
```
#### 権限を変更した
```
[test3@localhost .ssh]$ chmod 600 authorized_keys
[test3@localhost .ssh]$ ls -tlr
合計 12
-rw-r--r--. 1 test3 testgroup  409  9月 11 09:10 id_rsa.pub
-rw-------. 1 test3 testgroup 1766  9月 11 09:10 id_rsa
-rw-------. 1 test3 testgroup  409  9月 11 09:54 authorized_keys
```

##  sudoの設定をした
#### test3ユーザーではsudo出来ないことを確認した
```
$ sudo su -
[sudo] test3 のパスワード:
test3 は sudoers ファイル内にありません。この事象は記録・報告されます。
[test3@localhost .ssh]$
```
rootユーザーでSSH接続した
```
$ test@DESKTOP-0S2U0NI:~$ ssh root@192.168.0.4
root@192.168.0.4's password:
Last login: Sun Sep 11 08:02:03 2022 from 192.168.0.14
```
#### sudoの設定ファイルを変更した
wheelグループに対して、すべてのroot権限が必要なコマンドをパスワード無しで実行できる設定のコメントアウトを外しました。
```
# vi /etc/sudoers

出力結果
## Allow root to run any commands anywhere
root    ALL=(ALL)       ALL

## Allows members of the 'sys' group to run networking, software,
## service management apps and more.
# %sys ALL = NETWORKING, SOFTWARE, SERVICES, STORAGE, DELEGATING, PROCESSES, LOCATE, DRIVERS

## Allows people in group wheel to run all commands
%wheel  ALL=(ALL)       ALL

## Same thing without a password
※以下は、wheelグループに対して、すべてのroot権限が必要なコマンドをパスワード無しで実行できる設定です。
以下の設定は、コメントアウトされていたため、先頭の#は削除しました。
%wheel  ALL=(ALL)       NOPASSWD: ALL

## Allows members of the users group to mount and unmount the
## cdrom as root
# %users  ALL=/sbin/mount /mnt/cdrom, /sbin/umount /mnt/cdrom

## Allows members of the users group to shutdown this system
# %users  localhost=/sbin/shutdown -h now

## Read drop-in files from /etc/sudoers.d (the # here does not mean a comment)
#includedir /etc/sudoers.d
```
#### idコマンドで現在の所属しているグループを確認した
現在はwheelグループに所属していないことを確認した
```
# id test3
uid=1002(test3) gid=1000(testgrp) groups=1000(testgrp)
```
#### wheelグループに所属する
以下のサイトを参考にしました。
https://atmarkit.itmedia.co.jp/ait/articles/1706/02/news014_2.html
```
# sudo gpasswd -a test3 wheel
Adding user test3 to group wheel
```
wheelグループに所属していることを確認した
```
# id test3
uid=1002(test3) gid=1000(testgrp) groups=1000(testgrp),10(wheel)
```
test3ユーザーにスイッチする
```
# su - test3
```
test3ユーザーではsudo出来ました。
```
※現在のユーザ名を確認
$ whoami
test3
$ sudo su -
```
##  sshの秘密鍵をPCに格納した
WinSCPを使用して秘密鍵をPCのドキュメント等に保存する

コマンドプロンプトを開く

※C:\Users\ユーザー名\OneDrive\ドキュメントは私の環境です。環境は個人の環境のため、
PCの任意の場所に秘密鍵を格納してください

##  test3ユーザーでssh接続した
```
C:\Users\ユーザー名\OneDrive\ドキュメント>ssh -i id_rsa test3@サーバーのIPアドレス
The authenticity of host '192.168.0.32 (192.168.0.32)' can't be established.
ED25519 key fingerprint is SHA256:DN0GsB0EvI0hPMIDSrGCaZiu3Jlb0al5bcnNLniwvXg.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '192.168.0.32' (ED25519) to the list of known hosts.
Enter passphrase for key 'id_rsa':＜パスフレーズを入れる＞
Last login: 
[test3@localhost ~]$
```