linux 既存ユーザーのホームディレクトリ作成してみた

# はじめに
linuxにユーザーが登録されているが、ユーザーのホームディレクトリがない場合に
新規にホームディレクトリを作成する必要があります。
本記事に手順をまとめます。

そもそもユーザーのホームディレクトリがない状態でログインすると以下の画面が出ます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2599002/85d7bf76-4cf5-908a-5abf-99755192f90a.png)


# 手順
この手順はtest1のユーザーのホームディレクトリを作成します。

test1ユーザー以外のユーザーでSSH接続する。

rootに昇格する
```
# sudo su -
```

test1ユーザーのホームディレクトリが/home/test1であることを確認する。
```
# cat /etc/passwd | grep test1
test1:x:1001:1001::/home/test1:/bin/bash
```
test1ユーザーのホームディレクトリが存在しないことを確認する。
```
# ls -ltr /home/test1
ls: /home/test1 にアクセスできません: そのようなファイルやディレクトリはありません
```

### フォルダを作成する
フォルダを移動します。
```
# cd /home/
```
test1フォルダを作成する
```
mkdir test1
```
### /etc/skelファイルの中身をコピーする

ユーザー作成時に自動的にホームディレクトリを作成すると
/etc/skelフォルダ配下のファイルが自動的にホームディレクトリにコピーされます。

以下は/etc/skelのフォルダの中身です。
```
[root@localhost home]# ls -tlra /etc/skel
合計 24

ユーザーが新しいBashシェルセッションを開始するたびに読み込まれるファイルです。
環境変数等を設定します。
-rw-r--r--.  1 root root  231  4月  1  2020 .bashrc　

ユーザーがシステムにログインする際に実行されるスクリプトやコマンドを格納します。
ログイン時に実行される初期設定です。
-rw-r--r--.  1 root root  193  4月  1  2020 .bash_profile　

ユーザーがシステムにログアウトする際に実行されるスクリプトやコマンドを格納します。
-rw-r--r--.  1 root root   18  4月  1  2020 .bash_logout
drwxr-xr-x.  2 root root   62  1月 18 21:34 .
drwxr-xr-x. 74 root root 8192  1月 18 22:28 ..
[root@localhost home]#
```
/etc/skelフォルダ配下のファイルをコピーしました
```
# cp -a /etc/skel/. /home/test1
```
/etc/skelファイル配下のファイルがコピーされたことを確認しました。
```
# ls -tlra /home/test1
合計 12
-rw-r--r--. 1 root root 231  4月  1  2020 .bashrc
-rw-r--r--. 1 root root 193  4月  1  2020 .bash_profile
-rw-r--r--. 1 root root  18  4月  1  2020 .bash_logout
drwxr-xr-x. 2 root root  62  1月 18 21:34 .
drwxr-xr-x. 4 root root  31  1月 18 22:41 ..
```

### 所有ユーザーとグループを変更する
rootユーザーとrootグループになっているため、所有ユーザーとグループを変更する
```
[root@localhost home]# ls -tlr /home
合計 0
drwxr-xr-x. 2 root root 62  1月 18 21:34 test1
```
test1所有ユーザーとtest1グループを変更する
基本的には所有ユーザーはユーザー名と同じです。所有グループは任意です。
```
chown -R test1:test1 test1
```
test1の所有ユーザーとグループが変更されたことを確認する
```
[root@localhost home]# ls -ltr /home/test1
合計 0
[root@localhost home]#
[root@localhost home]# ls -ltr /home
合計 0
drwxr-xr-x. 2 test1 test1 62  1月 18 21:34 test1
```
test1のホームディレクトリ配下のファイルの所有ユーザーとグループも変わっていることを確認する。
```
[root@localhost home]# ls -tlra /home/test1
合計 12
-rw-r--r--. 1 test1 test1 231  4月  1  2020 .bashrc
-rw-r--r--. 1 test1 test1 193  4月  1  2020 .bash_profile
-rw-r--r--. 1 test1 test1  18  4月  1  2020 .bash_logout
drwxr-xr-x. 2 test1 test1  62  1月 18 21:34 .
drwxr-xr-x. 4 root  root   31  1月 18 22:41 ..
[root@localhost home]#
```
### TeraTermでログイン確認
test1ユーザーにログインするとホームディレクトリのパスになりました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2599002/1dcf2971-13d2-dbc9-57a3-7d240bf0062d.png)

### .bash_historyファイルが作成されていることを確認する

test1ユーザーにログインして.bash_historyファイルが存在しない場合は以下の手順に沿って
test1ユーザーのコマンド履歴が.bash_historyファイルに出力されるように設定してください


**.bash_historyが存在しないことを確認した**
```
$ /home/test1
[test1@localhost ~]$ ls -tlra
合計 20
-rw-r--r--. 1 test1 test1 193  4月  1  2020 .bash_profile
-rw-r--r--. 1 test1 test1  18  4月  1  2020 .bash_logout
drwxr-xr-x. 4 root  root   31  1月 18 22:41 ..
-rw-r--r--. 1 test1 test1 263  1月 21 18:59 .bashrc
drwxr-xr-x. 2 test1 test1 100  1月 21 18:59 .
```
**.bash_historyの空ファイルを作成する**

```
touch ~/.bash_history
```
**.bashrcファイルにHISTFILEという環境変数を設定します**
```
vi ~/.bashrc

# .bashrc
# Source global definitions
if [ -f /etc/bashrc ]; then
        . /etc/bashrc
fi

# Uncomment the following line if you don't like systemctl's auto-paging feature:
# export SYSTEMD_PAGER=

# User specific aliases and functions
export HISTFILE=~/.bash_history ←左記を追記する。

```
**sourceコマンドで~/.bashrcを反映する**
```
source ~/.bashrc
```
**HISTFILEの変数に設定されていることを確認する**
```
[test1@localhost ~]$ set | grep .bash_history
HISTFILE=/home/test1/.bash_history
```
**/home/test1/.bash_historyファイルの中身を確認する**
/home/test1/.bash_historyファイルの中身を確認してコマンド履歴が出力されることを確認する
```
[test1@localhost ~]$ cat .bash_history
ls -ltr
pwd
touch ~/.bash_history
ls -tlr
pwd
vi ~/.bashrc
cp -p ~/.bashrc ~/.bashrcbk
vi ~/.bashrc
source ~/.bashrc
[test1@localhost ~]$
```


# まとめ
linuxユーザーのホームディレクトリを作成する際は単にフォルダを作成して終わりではないため、注意が必要です。
/etc/skelフォルダからファイルをコピーすることとホームディレクトリの所有ユーザーとグループを変更する必要があります。