ホームディレクトリの移行。

ユーザを作成する際にホームディレクトリ を惰性で作ってしまったはいいけれど、あとでちゃんとした場所に収めたいと言うことがあるのではないかと思いまして、今回はホームディレクトリの引っ越しをやってみたいと思います。

ユーザhanakoは、/home/hanakoがホームディレクトリになっておりまして、新たに/home/testdir2を作成してそちらに引っ越します。

始めにディレクトリを作成します。(mvとかcpでも元ディレクトリを利用してもいいですが、アクセス権の設定も説明したいので新規作成します。)

[root@host1 ~]# cd /home
[root@host1 home]# mkdir testdir2
[root@host1 home]# ll   …ls -lのエイリアスでですね。


drwxr-xr-x. 2 root root 6 Jan 10 14:55 testdir2

作ったディレクトリは、所有ユーザ所有グループがrootになっているので、どちらhanakoへ変更します。
[root@host1 home]# chown hanako testdir2/
[root@host1 home]# chgrp hanako testdir2/

[root@host1 home]# ll

drwx------. 3 hanako hanako 78 Dec 27 17:01 hanako

drwxr-xr-x. 2 hanako hanako 6 Jan 10 14:55 testdir2

ホームディレクトリと同じになってますね。

 

このままだと、まだ元のディレクトリの方をユーザが使用しているので、
(その辺の設定は、/etc/passwdに記載されていますので、grepコマンドなどでファイルを見るとどのディレクトリを使っているかがわかります。)

[root@host1 home]# grep hanako /etc/passwd
hanako:x:1013:1014::/home/hanako:/bin/bash

 

新しく作成したディレクトリをホームに設定し直します。usermodコマンドを使用します。(もちろん、/etc/passwdをviで書き換えてもOKです。)

[root@host1 home]# usermod -d /home/testdir2/ hanako
[root@host1 home]#
[root@host1 home]# grep hanako /etc/passwd
hanako:x:1013:1014::/home/testdir2/:/bin/bash

もう一度/etc/passwdを確認すると/home/testdir2/に変わっていますので、念の為、suでユーザhanakoに入ってみます。

[root@host1 home]#
[root@host1 home]# su - hanako
Last login: Wed Jan 10 15:30:52 JST 2018 on pts/0
-bash-4.2$
-bash-4.2$ pwd
/home/testdir2/
-bash-4.2$

ログイン直後のpwdの結果、/home/testdir2/におりますので、ホームディレクトリとして設定されたのだなぁと。


ちなみに、存在しないディレクトリで指定しても、コマンドは通ります。
root@host1 home]# usermod -d /home/testdir22/ hanako
[root@host1 home]#


でも、ログインすると怒られます。
[root@host1 home]# su - hanako
su: warning: cannot change directory to /home/testdir22/: No such file or directory
-bash-4.2$ pwd
/home
-bash-4.2$

 

 

今のホームディレクトリをそのまま移動して使いたいときは、-mオプションを使います。(普通はこちらを使うことが多いかなぁと。)


[root@host1 home]# grep hanako /etc/passwd
hanako:x:1013:1014::/home/testdir2/:/bin/bash
[root@host1 home]#
[root@host1 home]# usermod -d /home/testdir22/ -m hanako
[root@host1 home]#
[root@host1 home]# ll

drwxr-xr-x. 4 hanako hanako 56 Jan 10 15:33 testdir22

[root@host1 home]#

もともとtestdir2だったのが、testdir22に変わっています。。

そして、/etc/passwdの内容も書き換わります。

[root@host1 home]# grep hanako /etc/passwd
hanako:x:1013:1014::/home/testdir22/:/bin/bash

 

おまけ。。


他のユーザにRead/Writeのアクセス権を与えたいときは、グループアクセス権を設定します。

chmodのはアクセス権を変更するコマンドです。
アクセス権の話は後ほどまた何処かでやるかもしれないですが、とりあえず760と指定すると、

所有ユーザ :読取-4,書込-2,実行-1(合計:7
所有グループ読取-4,書込-2,実行-0(合計:6
その他ユーザ:読取-0,書込-0,実行-0(合計:0

と言ったアクセス制御を行うことができます。


[root@host1 home]# chmod 760 /home/testdir22/
[root@host1 home]# ll

drwxrw----. 4 hanako hanako 56 Jan 10 15:33 testdir22

[root@host1 home]#

このようにグループのアクセス権に対して読取/書込(rw-)が付きまして、その他のアクセス権が消えました(---)ね!


後は、taroをhanakoのグループに参加させれば完了です。
[root@host1 home]# id taro
uid=1010(taro) gid=1011(taro) groups=1011(taro)
[root@host1 home]#

いまユーザtaroはグループtaroにだけ所属しておりますので、グループhanakoも追加します。


[root@host1 home]# usermod -G taro,hanako taro
[root@host1 home]#

前回やりましたけど、グループを追加する場合でも既存のグループも記載しないといけません。書かれていないグループは消えてしまいます。。


[root@host1 home]# id taro
uid=1010(taro) gid=1011(taro) groups=1011(taro),1014(hanako)
[root@host1 home]#

 

ではでは。