1、NFS簡介安全
NFS是NetworkFile System即網絡文件系統,NFS在文件傳送或過程當中依賴於RPC協議。RPC是RemoteProtocol Call即遠程過程調用,RPC主要由部分功能完成,一部分功能由本地程序完成,另外一部分功能由遠程主機上的函數完成。NFS工做於TCP和UDP的2049端口,RPC工做TCP的111端口。bash
2、安裝NFS服務服務器
NFS的安裝直接經過yum就能夠了,它須要安裝兩個軟件包,一般狀況下在安裝系統時就默認包裝的。網絡
nfs-utils-* #基本的NFS命令與監控程序async
rpcbind-* #支持安全NFS RPC服務的鏈接,在Centos 6系統中RPC爲rpcbind.ide
[root@Bisc-lab01 ~]# rpm -qa|egrep"nfs|rpcbind" nfs-utils-1.2.3-54.el6.x86_64 rpcbind-0.2.0-11.el6.x86_64 nfs-utils-lib-1.1.5-9.el6.x86_64 nfs4-acl-tools-0.3.3-6.el6.x86_64
3、NFS守護進程函數
nfsd:它是基本的NFS守護進程,主要功能是管理客戶端是否可以登陸服務器;工具
mountd:它是RPC安裝守護進程,主要功能是管理NFS的文件系統。當客戶端順利經過nfsd登陸NFS服務器後,在使用NFS服務所提供的文件前,還必須經過文件使用權限的驗證。它會讀取NFS的配置文件/etc/exports來對比客戶端權限。性能
idmapd:主要功能是進行端口映射工做。當客戶端嘗試鏈接並使用RPC服務器提供的服務(如NFS服務)時,rpcbind會將所管理的與服務對應的端口提供給客戶端,從而使客戶能夠經過該端口向服務器請求服務。ui
4、啓動NFS服務
(1)啓動NFS服務
在啓NFS服務以前必定要行啓用rpcbind服務,由於NFS要向rpcbind註冊。
[root@Bisc-lab01 ~]# service rpcbind start Starting rpcbind: [ OK ] [root@Bisc-lab01 ~]# service nfs start Starting NFS services: [ OK ] Starting NFS quotas: [ OK ] Starting NFS mountd: [ OK ] Starting NFS daemon: [ OK ] Starting RPC idmapd: [ OK ]
(2)exprotfs命令
exportfs:維護exports文件導出的文件系統表的專用工具:
export -ar: 從新導出全部的文件系統
export -au: 關閉導出的全部文件系統
export -u FS: 關閉指定的導出的文件系統
5、NFS的配置
NFS服務的配置文件在/etc/exports,這個配置文件比較的簡單,格式以下:
directory(or file system) client1(option1,option2) client2(option1, option2)
文件系統指NFS服務須要共享給客戶端的目錄
客戶端指網絡中能夠訪問NFS服務的主機,可使用IP、FQDN或DOMAIN、NETWORK
(1)經常使用選項
有幾個經常使用的選項能夠對 NFS 實現進行定製。這些選項包括:
secure: 這個選項是缺省選項,它使用了 1024 如下的 TCP/IP 端口實現 NFS 的鏈接。指定 insecure 能夠禁用這個選項。
rw: 這個選項容許 NFS客戶機進行讀/寫訪問。缺省選項是隻讀的。
async: 這個選項能夠改進性能,可是若是沒有徹底關閉 NFS 守護進程就從新啓動了 NFS 服務器,這也可能會形成數據丟失。
no_wdelay: 這個選項關閉寫延時。若是設置了 async,那麼 NFS 就會忽略這個選項。
nohide: 若是將一個目錄掛載到另一個目錄之上,那麼原來的目錄一般就被隱藏起來或看起來像空的同樣。要禁用這種行爲,需啓用 hide 選項。
no_subtree_check: 這個選項關閉子樹檢查,子樹檢查會執行一些不想忽略的安全性檢查。缺省選項是啓用子樹檢查。
no_auth_nlm: 這個選項也能夠做爲insecure_locks 指定,它告訴 NFS 守護進程不要對加鎖請求進行認證。若是關心安全性問題,就要避免使用這個選項。缺省選項是 auth_nlm 或 secure_locks。
mp (mountpoint=path): 經過顯式地聲明這個選項,NFS 要求掛載所導出的目錄。
fsid=num: 這個選項一般都在NFS 故障恢復的狀況中使用。若是但願實現 NFS 的故障恢復,請參考 NFS 文檔。
(2)用戶映射
經過 NFS 中的用戶映射,能夠將僞或實際用戶和組的標識賦給一個正在對 NFS 捲進行操做的用戶。這個 NFS 用戶具備映射所容許的用戶和組的許可權限。對 NFS 卷使用一個通用的用戶/組能夠提供必定的安全性和靈活性,而不會帶來不少管理負荷。
在使用 NFS 掛載的文件系統上的文件時,用戶的訪問一般都會受到限制,這就是說用戶都是以匿名用戶的身份來對文件進行訪問的,這些用戶缺省狀況下對這些文件只有只讀權限。這種行爲對於 root 用戶來講尤爲重要。然而,實際上的確存在這種狀況:但願用戶以 root 用戶或所定義的其餘用戶的身份訪問遠程文件系統上的文件。NFS 容許指定訪問遠程文件的用戶——經過用戶標識號(UID)和組標識號(GID),能夠禁用正常的 squash 行爲。
用戶映射的選項包括:
root_squash: 這個選項不容許 root 用戶訪問掛載上來的 NFS 卷。
no_root_squash: 這個選項容許 root 用戶訪問掛載上來的 NFS 卷。
all_squash: 這個選項對於公共訪問的 NFS 捲來講很是有用,它會限制全部的 UID 和 GID,只使用匿名用戶。缺省設置是 no_all_squash。
anonuid和 anongid: 這兩個選項將匿名 UID和 GID 修改爲特定用戶和組賬號。
[root@Bisc-lab01 ~]# cat /etc/exports /share 172.16.9.0/16(rw,sync,no_root_squash)
6、客戶端掛載
(1)查看NFS服務器端共享的文件系統
showmout-e NFSSERVER_IP
[root@Bisc-lab01 ~]# showmount -e172.16.9.20 Export list for 172.16.9.20: /share 172.16.9.0/16
(2)掛載NFS文件系統
mount-t nfs SERVER:/path/to/sharedfs /path/to/mount_point
[root@Bisc-lab01 ~]# mount -t nfs172.16.9.20:/share /mnt [root@Bisc-lab01 ~]# mount|tail -1 172.16.9.20:/share on /mnt type nfs(rw,vers=4,addr=172.16.9.20,clientaddr=172.16.9.20)
(3)設置開機自動掛載NFS
只須要在/etc/fstab文件中添加以下格式的一行:
SERVER:/PATH/TO/EXPORTED_FS /mount_point nfs defaults,_netdev 0 0
[root@Bisc-lab01 ~]# tail -1 /etc/fstab 172.16.9.20:/share /mnt nfs defaults,_netdev 0 0
注意:若是不加_netdev選項時,當NFS服務器先關時時,而後在關閉客戶端機器,客戶端機器是沒法關機的,由於客戶端機要卸載NFS目錄,NFS服務器沒法給客戶端響應,此時客戶端就處於一直等待的狀態,或者手動的卸載目錄就能完成關閉。_netdev選項告訴操做系統是此掛載是一個網絡設備。