NFS、簡言之、便是檔案伺服器
在部署過程中、檔案的讀寫權限是比教容易出錯
本博文按以下 6 個方面展開、但重點放在檔案許可權上、
● 原理
● /etc/exports
● 檔案許可權
● Server/Client 配置
● 2 個常用命令
● Troubleshoting
● 經驗建議
㈠ 原理
所謂一圖勝千言、有圖有真相
Rocky 便隨大流啦、放 2 張圖片
值得注意的是、啟動 NFS 之前、portmap 要先啟動
㈡ /etc/exports
NFS 的部署其實很簡單、分 3 步走戰略:配置/etc/exports → 啟動 portmap → 啟動 NFS
那麼、萬裡長征第一步:配置 /etc/exports
這個設定檔很簡單、每一行最前面是要共用出來的目錄
然後、是這個目錄可以依照不同的許可權共用給不同的主機
比如:
/tmp/rokcy 192.168.1.0/24(ro) *.fjnu.edu.com(rw,sync)
格式說明:小括弧()是設定許可權參數的位置、主機名稱與小括弧是連在一起
主機名稱的設定主要有幾個方式:
● 可以使用完整的 IP 或者 網段、例如:192.168.1.110 或 192.168.1.0/24
● 可以使用主機名稱、不過這個名稱要在/etc/hosts 或 DNS 裡能找到、對於主機名稱支援萬用字元的使用、如* 或 ?
許可權方面的常見參數有:
rw :讀寫;
ro :唯讀;
sync :同步模式,記憶體中資料時時寫入磁碟;
async :不同步,把記憶體中資料定期寫入磁碟中;
no_root_squash :加上這個選項後,root使用者就會對共用的目錄擁有至高的許可權控制,就像是對原生目錄操作一樣。不安全,不建議使用;
root_squash :和上面的選項對應,root使用者對共用目錄的許可權不高,只有普通使用者的許可權,即限制了root;
all_squash :不管使用NFS的使用者是誰,他的身份都會被限定成為一個指定的普通使用者身份;
anonuid/anongid :要和root_squash 以及 all_squash一同使用,用於指定使用NFS的使用者限定後的uid和gid,前提是原生/etc/passwd中存在這個uid和gid
㈢ 檔案許可權
對於一個檔案的寫入許可權、需要滿足:
(1)使用者帳號,亦即 UID 的相關身份
(2)NFS 伺服器允許有寫入的許可權
(3)檔案系統確實具有 w 的許可權
㈣ 2 個命令
① 在Client端使用:
showmount -e IP或主機名稱
查看可掛載的目錄
② 在Server端使用:
重新設定/etc/exports後可用:
exportfs -avr
㈤ Troubleshoting
① 使用者或用戶端身份許可權不符
[root@linux ~]# mount -t nfs localhost:/home/test /home/nfsmount: localhost:/home/test failed, reason given by server: Permission denied
解決方案:
如果確定您的 IP 沒有錯誤,那麼請通知伺服器端, 請管理員將你的 IP 加入 /etc/exports
② 伺服器或用戶端某些服務未啟動:
[root@linux ~]# mount -t nfs localhost:/home/test /home/nfsmount: RPC: Port mapper failure - RPC: Unable to receive[root@linux ~]# mount -t nfs localhost:/home/test /home/nfsmount: RPC: Program not registered
解決方案:
要嘛就是 portmap 忘記開,要嘛就是伺服器端的 nfs 忘記開!解決的方法就是去啟動這兩個咚咚啦!
③ 被防火牆檔掉了:
這個也很容易忘記了!那就是重新設定一下您的防火牆,這包含了兩部份,包括 iptables 與 TCP_Wrappers !
因為我們啟動了 portmap ,這個東西有兩個資料需要分享出來,一個是 port 111 需要提供出去,
因此您的 iptables 規則當中,需要開放這個 port 喔
㈥ 經驗建議
如果 NFS 在高速環境下啟動並執行話、建議加上:
mount -t nfs -o nosuid,noexec,nodev,rw,bg,soft,rsize=32768,wsize=32768