AutofsがNFS経由でユーザーのホームディレクトリをマウントするのに問題があります。 NFSクライアント(client.home)とNFSサーバー(server.home)があります。どちらのシステムもCentOS 7.4です。 SELinuxは両方のシステムで許容モードで実行されています。ユーザーのホームディレクトリを自動マウントできるように、誰かが私を正しい方向に向けることができますか?
サーバー上のNFSエクスポートテーブル
[root@server ~]# exportfs -v
/home/tim
client.home(rw,sync,wdelay,hide,no_subtree_check,sec=sys,secure,root_squash,no_all_squash)
クライアントはこれらのエクスポートを見ることができます
[root@client ~]# showmount -e server
Export list for server:
/home/tim client.home
2人のユーザーがいます。 1つはクライアント上に、もう1つはサーバー上にあります。どちらも同じ名前とUIDを持っています。ただし、ユーザーのホームディレクトリはserver.home
にのみあります。
[tim@server ~]$ id
uid=1001(tim) gid=1001(tim) groups=1001(tim)
context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
-bash-4.2$ hostname
client.home
-bash-4.2$ id
uid=1001(tim) gid=1001(tim) groups=1001(tim)
context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
このディレクトリは、client.home
のユーザーtim
に対して自動マウントする必要があります。残念ながら、それは起こらないようです。
[root@client ~]# su - tim
-bash-4.2$ id
uid=1001(tim) gid=1001(tim) groups=1001(tim)
context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
-bash-4.2$ cd /home/tim
-bash: cd: /home/tim: No such file or directory
-bash-4.2$ ls /home
vagrant
それでも、auto.master
ファイルを正しく設定したと思います。
[root@client ~]# cat /etc/auto.master
#
# Sample auto.master file
# This is a 'master' automounter map and it has the following format:
# mount-point [map-type[,format]:]map [options]
# For details of the format look at auto.master(5).
#
/misc /etc/auto.misc
#
# NOTE: mounts done from a hosts map will be mounted with the
# "nosuid" and "nodev" options unless the "suid" and "dev"
# options are explicitly given.
#
/net -hosts
#
# Include /etc/auto.master.d/*.autofs
# The included files must conform to the format of this file.
#
+dir:/etc/auto.master.d
#
# Include central master map if it can be found using
# nsswitch sources.
#
# Note that if there are entries for /net or /misc (as
# above) in the included master map any keys that are the
# same will not be seen as the first read key seen takes
# precedence.
#
+auto.master
/home /etc/auto.home
そして、私の/etc/auto.home
の内容
[root@client /]# cat /etc/auto.home
* nfs4,rw &:/home/&
ユーザーのホームディレクトリに単純にcd
を入れることができるはずです。代わりに、autofs.service
の実行中は、/home
にファイルを作成することもできません。
[root@client /]# systemctl is-active autofs
active
[root@client /]# touch /home/test
touch: cannot touch ‘/home/test’: Permission denied
[root@client home]# ll -d /home
drwxr-xr-x. 2 root root 0 Sep 16 02:04 /home
[root@client /]# systemctl stop autofs
[root@client /]# systemctl is-active autofs
inactive
[root@client /]# touch /home/test
[root@client /]# ls /home
test vagrant
編集:
NFS共有を手動でマウントできます。また、以前の奇妙な権限の問題は、root_squash
ファイルで設定した/etc/exports
オプションが原因であったと確信しています。
[root@client ~]# mount -t nfs4 -o rw server.home:/home/tim /mnt
[root@client ~]# df -t nfs4
Filesystem 1K-blocks Used Available Use% Mounted on
server.home:/home/tim 39269760 1192448 38077312 4% /mnt
[root@client ~]# ll -d /mnt
drwx------. 2 tim tim 86 Sep 16 18:51 /mnt
私はそれを考え出した。クライアントで編集するべきだったときに、サーバーで/etc/auto.master
を編集していました。つまり、クライアントで以下を/etc/auto.master
に追加します
/home/ /etc/auto.home
引き続きクライアント上で、/etc/auto.home
ファイルを作成し、それに以下を追加します
* -nfs4,rw &:/home/&
最後にautofsを再起動します(クライアント上)
$ systemctl restart autofs
そして、それでうまくいくはずです。クライアント上のユーザーはサーバー上のユーザーと同じである必要があります(同じユーザー名、同じUID)。これは通常、LDAPを使用して行われます。また、autofsがクライアント上にマウントポイントを作成するため、ホームディレクトリはサーバー上にのみ存在する必要があります。