如何直接掛載nfsv4資料夾而不是root

如何直接掛載nfsv4資料夾而不是root

運行 CentOS 8

server side: /etc/exports:
/home/share *(ro)

/home 和 /home/share 屬於 root.root,對目錄有 755 權限,對檔案有 644 權限。

 client side:
 mount -t nfs4 server:/ /sharefolder

如何直接掛載 /home/share 到 /sharefolder 而不是掛載 fs 的根目錄?如果我嘗試“mount -t nfs4 server:/home/share /sharefolder”,則會收到“不允許操作”錯誤

答案1

mount -t nfs4 server:/home/share /sharefolder看起來像是一個正確的客戶端命令,並且您的設定對我有用,因為我剛剛測試了它。

當然,你必須以 root 身分輸入該指令,或使用sudo它。 「不允許操作」錯誤訊息表示您可能不小心以非 root 使用者身分執行了該命令,或輸入了錯誤的共用名稱。

請注意,即使您只是匯出並掛載server:/home/share,NFSv4 伺服器也需要自動生成虛擬出口對於//home。但是,這些不是 NFS 伺服器的真實/的或/home,而是虛擬的唯讀目錄,僅包含到達實際匯出的目錄所需的最少子目錄。掛載共享後,您可以/proc/fs/nfsd/exports在 NFS 伺服器上看到:

cat /proc/fs/nfsd/exports
# Version 1.1
# Path Client(Flags) # IPs
/home   *(ro,insecure,no_root_squash,sync,no_wdelay,no_subtree_check,v4root,uuid=e4c0fcd4:00b94db3:b63bd9a8:0e705e29,sec=390003:390004:390005:1)
/home/share     *(ro,root_squash,sync,wdelay,no_subtree_check,uuid=e4c0fcd4:00b94db3:b63bd9a8:0e705e29,sec=1)
/       *(ro,insecure,no_root_squash,sync,no_wdelay,no_subtree_check,v4root,fsid=0,uuid=e4c0fcd4:00b94db3:b63bd9a8:0e705e29,sec=390003:390004:390005:1)

答案2

經過一些測試,我設法重現了您的問題,結果證明是防火牆問題。請確保防火牆已停用,然後驗證您的nfs共用是否正常運作。

假設您使用firewalld

sudo systemctl stop firewalld

一旦確定其nfs按預期工作,您將需要更改防火牆配置。 nfs依賴其他守護進程,因此為了nfs正常工作,您不僅需要允許nfs,而且還mountd需要允許rpc-bind

sudo firewall-cmd --permanent --add-service=rpc-bind
sudo firewall-cmd --permanent --add-service=mountd
sudo firewall-cmd --permanent --add-service=nfs
sudo firewall-cmd --reload

如果您希望僅允許特定區域使用這些服務,您也可以透過新增 ie 來指定區域--zone=nfszone

我還沒有徹底測試這個解決方案,您可能需要打開額外的連接埠才能使所有功能正常工作(即文件鎖定)請參閱https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/6/html/storage_administration_guide/s2-nfs-nfs-firewall-config

相關內容