nfs配置

NFS
 

windows中經常使用網上鄰居的功能來實現在局域網中共享文件,方便了使用。那麼在linux中是否有同樣的功能呢?結果是肯定的。

linux系統上我們可以使用nfs服務來實現局域網中的共享。nfs服務工作方法如下:

首先服務器啓動服務,service nfs start

nfs服務(監聽2049端口)的主進程是nfsd同時要啓動四個進程portmaprpc.mountdlockdrpc.quotadrpc.statd這幾個進程。

nfs服務啓動的進程都是同時監聽tcp/udp協議。其幾個進程的作用分別如下:

1.                 portmap監聽端口111,提供的服務是給予其他三個進程提供隨機端口。rpc.mountd確定客戶端是否能夠掛載分區。

2.                 rpc.mountd,提供讓服務器掛載的接口

3.                 locked提供文件鎖,在有多個用戶掛載同個文件時,保證數據的同步性。其方法爲:對問價進行加鎖,不允許多個用戶同時修改一個文件。

4.                 rpc.quotad是在掛載時檢查是否有磁盤配額,同時並啓用之。

5.                 rpc.statdlocked聯合使用,共同保證數據的完整性和一致性

其工作過程如下:

client à服務器的portmapà得到mountd端口à連接服務器的mountd端口à   mountd查找exports文件同時根據rpc.quotad的限制給予client權限(句柄)à訪問servernfsd進程,掛載分區

在實現共享時分以下幾步:

1.          首先在服務器上配置所要共享的文件夾

2.          啓動服務,如果服務已經啓動使用命令export -arv重新讀取一下共享的文件夾。

3.          在客戶端中創建目錄,並掛載服務器中共享的文件夾

 

以下爲配置使用的命令:

服務器上的配置

是用命令 rpcinfo -p 可以查看nfs對應進程啓動的端口號

編輯配置文件/etc/exports:格式如下:

/path/of/share        client_list(選項)

用戶列表可以是單個用戶,也可以是一個網段的用戶,或者是所有用戶。

常見的選項如:rwasyncroot_squashno_root_squashall_squash含義如下

rw,允許掛載的文件及可讀可寫,但最終的權限是與文件本身權限的交集。

async,允許異步寫入

root_squash,當以root用戶的登錄時將其切換至nobody用戶的權限。

no_root_squash,直接以root用戶登錄對方主機。

all_squash,任何用戶登錄上之後都切換到nobody用戶。

當配置好上述文件後重啓nfs服務,或者執行命令exortfs -arv讓服務器重新讀取共享的目錄。

客戶端配置

查看共享的文件夾:showmount -e SERVER-IP

如果看到服務器共享的文件夾,使用命令 mount -t nfs SERVER/share/dir /local/dir將其掛載。然後切換至目錄查看,是否掛載成功。

當你切換至掛載的目錄時並創建目錄時,文件的屬主,屬組又是誰呢?這就是nfs服務的一個缺陷:nfs服務是以UID號來區分用戶的身份的,只要客戶機上當前用戶與服務器上的的一個用戶UID相同時,就以服務區上的那個用戶的身份運行。這樣就存在一種情況:本地的root用戶擁有了服務上root用戶的權限,所以在/etc/exports中最好加上root_squash,以保證其文件的安全性。

nfs的缺點:

1.          產生的端口是隨即的

2.          基於IP地址的驗證

3.          完全的相信客戶端

結局端口的問題可以通過更改配置文件的方法:

修改/etc/sysconfig/nfs

LOCKD_TCPPORT=””
LOCKD_UDPPORT=””
MOUNTD_PORT=””
STATD_PORT=””
RQUOTAD_PORT=””
STATD_QUTGOING_PORT=””

通過修改以上的幾行內容來規定端口,在選取端口時儘量使用不常用的端口避免衝突。

解決對身份的驗證,可以通過NISKERBOROS這將在後面的文章中介紹

  

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