Ubuntu 下NFS服務器配置


         在UBUNTU下進行NFS服務器配置,雖說有實驗指導書,但由於使用的LINUX版本不一樣,一個簡單的NFS服務器配置都花了一天半的時間,網上很多方法都嘗試了,沒有效果。終於找到了一個可以解決的辦法,特意記錄下來,或許能幫助遇到這個問題的朋友。


首先,要把主機的防火牆關掉。並把主機當作服務器,讓開發板作爲客戶端。
NFS服務器配置

NFS用於Linux主機訪問網絡中其他Linux主機上的共享資源。NFS的原理是在客戶端上通過網絡將遠程主機共享文件系統以掛載(Mount)的方式加入本機的文件系統,之後的操作就如同在本機上一樣。

NFS服務器(宿主機)

 1.安裝NFS

 Ubuntu上默認是沒有安裝NFS服務器的,首先要安裝NFS服務程序:

	$ sudo apt-get install nfs-kernel-server

 (安裝nfs-kernel-server時,apt會自動安裝nfs-common和portmap)

這樣,宿主機就相當於NFS Server。

   2. 配置NFS

 1)配置portmap

 方法1: 編輯/etc/default/portmap, 將 -i 127.0.0.1 去掉.

方法2:              

       $ sudo dpkg-reconfigure portmap 

對Should portmap be bound to the loopback address? 選N.

2)配置/etc/hosts.deny

 $ sudo gedit /etc/hosts.deny

(禁止任何host(主機)能和你的NFS服務器進行NFS連接),加入:

### NFS DAEMONS

portmap:ALL

lockd:ALL

mountd:ALL

rquotad:ALL

statd:ALL

3)配 置/etc/hosts.allow

 $ sudo gedit /etc/hosts.allow

允許那些你想要的主機和你的NFS服務器建立連接。下列步驟將允許任何IP地址以192.168.1開頭的主機(連接到NFS服務器上),也可以指定特定的IP地址。

### NFS DAEMONS

portmap: 192.168.1.

lockd: 192.168.1.

rquotad: 192.168.1.

mountd: 192.168.1.

statd: 192.168.1.


起用保護機制

    上面設置了只要在192.168.1.*這個網段的所有IP地址用戶都可以訪問共享目錄,但我只想讓一個IP地址訪問,比如 192.168.1.101那麼就可以這樣設置了。

可以通過設定/etc/hosts.deny和/etc/hosts.allow文件來限制網絡服務的存取權限。

***/etc/hosts.deny***

portmap:ALL

lockd:ALL

mountd:ALL

rquotad:ALL

statd:ALL

***/etc/hosts.allow***

portmap:192.168.1.101

lockd:192.168.1.101

mountd:192.168.1.101

rquotad:192.168.1.101

statd:192.168.1.101

     
      同時使用這兩個文件就會使得只有ip爲192.168.1.101的機器使用NFS服務。你的target board的ip地址設定爲192.168.1.101,這樣就可以了。

    /etc/hosts.deny 和 /etc/hosts.allow 設置對portmap的訪問. 採用這兩個配置文件有點類似"mask"的意思. 現在/etc/hosts.deny中禁止所有用戶對portmap的訪問. 再在/etc/hosts.allow 中允許某些用戶對portmap的訪問。

 



4)重啓portmap daemon

 每次對/etc/hosts.deny 和 /etc/hosts.allow兩文件的修改後都要重啓portmap daemon。不然修改無效。

 $ sudo /etc/init.d/portmap restart


5)配置/etc/exports

 NFS掛載目錄及權限由/etc/exports文件定義。

 $sudo gedit /etc/exports

 比如我要將我的home目錄中的/home/lin/NFSshare目錄讓192.168.1.*的IP共享, 則在該文件末尾添加下列語句:

 /home/lin/NFSshare  192.168.1.*(rw,sync,no_root_squash)

 然後保存退出。

 /home/lin/NFSshare就表示共享目錄,當然,你可以隨便換成自己喜歡的目錄。

 192.168.1.*:前面三位是你主機(NFS客戶端)的ip地址(本機終端ifconfig命令就可以獲得本機的ip地址)。

 rw:讀/寫權限,只讀權限的參數爲ro;

 sync:數據同步寫入內存和硬盤,也可以使用async,此時數據會先暫存於內存中,而不立即寫入硬盤。

 no_root_squash:NFS 服務器共享目錄用戶的屬性,如果用戶是 root,那麼對於這個共享目錄來說就具有 root 的權限。

 6)重啓nfs服務

 $ sudo /etc/init.d/nfs-kernel-server restart 



   
    執行這個命令的時候可能會提示一些錯誤,如下:

 * Stopping NFS kernel daemon                                            [ OK ] 


 * Unexporting directories for NFS kernel daemon...                      [ OK ] 


 

 * Exporting directories for NFS kernel daemon...                               exportfs: /etc/exports [1]: Neither 'subtree_check' or 'no_subtree_check' specified for export "192.168.1.*:/home/lin/NFSshare".

 

  Assuming default behaviour ('no_subtree_check').

 

  NOTE: this default has changed since nfs-utils version 1.0.x

                                                                                                                   [ OK ]

 * Starting NFS kernel daemon                                             [ OK ] 

 

       我不知道具體原因,不用管,不影響後面的使用。

 

注意:每次對/etc/exports文件的修改,都要重啓一下nfs服務。

 7)nfs服務器端測試

 由於nfs服務器端默認是安裝了nfs客戶端(nfs-common)的,所以可以在服務器端掛載共享文件夾作測試

。

	$sudo mount 192.168.1.100:/home/liu /mnt

 192.168.1.100是nfs服務器端IP地址,可以在服務器端終端通過命令ifconfig獲得。

 可能出現錯誤,解決辦法

 重新$sudo gedit /etc/exports,將“ 192.168.1.* ”換成“*”,要注意就這一個星星哦!修改完之後不要忘了重啓一下nfs服務

 $ sudo /etc/init.d/nfs-kernel-server restart

 這樣修改之後,就可以看到/mnt文件下共享了/home/lin/NFSshare文件夾裏的內容。測試完畢,要卸載nfs的掛載

 

                               $sudo umount /umt
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章