はじめに
linuxにユーザーが登録されているが、ユーザーのホームディレクトリがない場合に
新規にホームディレクトリを作成する必要があります。
本記事に手順をまとめます。
そもそもユーザーのホームディレクトリがない状態でログインすると以下の画面が出ます。
手順
この手順は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ユーザーにログインするとホームディレクトリのパスになりました。
.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フォルダからファイルをコピーすることとホームディレクトリの所有ユーザーとグループを変更する必要があります。