【人在運維囧途_11】GNU/Linux NFS 伺服器部署時許可權設定的注意事項

dbasdk發表於2015-03-23
   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/nfs
mount: localhost:/home/test failed, reason given by server: Permission denied


         解決方案:
         如果確定您的 IP 沒有錯誤,那麼請通知伺服器端, 請管理員將你的 IP 加入 /etc/exports 
         
      ② 伺服器或客戶端某些服務未啟動:


[root@linux ~]# mount -t nfs localhost:/home/test /home/nfs
mount: RPC: Port mapper failure - RPC: Unable to receive

[root@linux ~]# mount -t nfs localhost:/home/test /home/nfs
mount: 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 

<!-- Baidu Button BEGIN --&gt

相關文章