我在让 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
有两个用户。一种在客户端,一种在服务器。它们具有相同的名称和 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
该目录应该为tim
上的用户自动挂载client.home
。不幸的是,这似乎并没有发生。
[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
答案1
我想到了。/etc/auto.master
当我应该在客户端上进行编辑时,我正在服务器上进行编辑。即在客户端添加以下内容/etc/auto.master
/home/ /etc/auto.home
仍在客户端上,创建/etc/auto.home
文件并向其中添加以下内容
* -nfs4,rw &:/home/&
最后重启autofs(在客户端)
$ systemctl restart autofs
那应该可以了。需要注意的是,客户端上的用户应该与服务器上的用户相同(相同的用户名、相同的 UID)。这通常是使用 LDAP 来完成的。另外,主目录应该只存在于服务器上,因为 autofs 会在客户端上为您创建挂载点。