Centos

Autofs 問題掛載 NFS 主目錄 (CentOS 7.4)

  • September 18, 2017

我在讓 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

該目錄應該為使用者自動掛載timclient.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

我想到了。/etc/auto.master當我應該在客戶端上進行編輯時,我正在伺服器上進行編輯。也就是說,在客戶端上添加以下內容/etc/auto.master

/home/    /etc/auto.home

仍然在客戶端上,創建/etc/auto.home文件並將以下內容添加到其中

*    -nfs4,rw    &:/home/&

最後重啟 autofs(在客戶端)

$ systemctl restart autofs

那應該這樣做。需要注意的是,客戶端上的使用者應該與伺服器上的使用者相同(相同的使用者名,相同的 UID)。這通常使用 LDAP 來完成。此外,主目錄應該只存在於伺服器上,因為 autofs 會在客戶端上為您創建掛載點。

引用自:https://unix.stackexchange.com/questions/392558