服務器搭建部分:html
yum install nfs-utils yum install rpcbind.x86_64 service rpcbind restart service nfs restart chkconfig rpcbind on chkconfig nfs on
nfs的自己不具有傳輸的能力,將由rpc模塊來完成調用daemons實現傳輸目的。vim
nfs的自身端口是tcp和dup的2049安全
rpc自身的端口是tcp和udp的111bash
客戶端在鏈接nfs服務器時,rpc負責告訴客戶端你要鏈接的端口是多少,這些端口是由rpc產生的隨機產生的。服務器
注:圖片來自 http://www.cnblogs.com/zzzhfo/p/5804831.htmlasync
1.在/etc/sysconfig/nfs中將變化的端口鎖住(先用netstat -ntulp | grep 6000 肯定這個端口無進程使用)tcp
vim /etc/sysconfig/nfs # TCP port rpc.lockd should listen on. 鎖定的tcp端口 LOCKD_TCPPORT=6000 # UDP port rpc.lockd should listen on. 鎖定的udp端口 NFS V2只支持UDP LOCKD_UDPPORT=6000 # Port rpc.mountd should listen on. 負責NFS的檔案系統,當CLIENT端經過rpc.nfsd登錄SERVER後,對 # clinet存取server的文件進行一系列的管理 MOUNTD_PORT=892 # Port rpc.statd should listen on. 爲nfs鎖定服務提供crash恢復功能 STATD_PORT=66 # Port rquotad should listen on. 處理當用戶經過nfsmount到遠程服務器時的配額 RQUOTAD_PORT=875
2.放行防火牆學習
iptables -I INPUT -p tcp --dport 2049 -j ACCEPT iptables -I INPUT -p udp --dport 2049 -j ACCEPT iptables -I INPUT -p tcp --dport 111 -j ACCEPT iptables -I INPUT -p udp --dport 111 -j ACCEPT iptables -I INPUT -p tcp --dport 6000 -j ACCEPT iptables -I INPUT -p udp --dport 6000 -j ACCEPT iptables -I INPUT -p tcp --dport 892 -j ACCEPT iptables -I INPUT -p tcp --dport 66 -j ACCEPT iptables -I INPUT -p tcp --dport 875 -j ACCEPT
3.建立共享目錄ui
mkdir /share
4.配置共享目錄的配置文件url
vim /etc/exports /share 192.168.80.0/24(rw,sync,no_root_squash)
5.掛載
#實際的生產環境中,不建議重啓,能夠從新掛載。 #a表示全部 r表示從新掛載,v表示現實結果 exportfs -arv
客戶端操做:
1.建立掛載點
mkdir /xx/
2.掛載
mount 192.168.80.130:/share /xx/
-------------------------------------------------------------------------------------------------------------
關於一些命令註釋
- 權限有:
- rw:read-write,可讀寫; 注意,僅僅這裏設置成讀寫客戶端仍是不能正常寫入,還要正確地設置共享目錄的權限,參考問題7
- ro:read-only,只讀;
- sync:文件同時寫入硬盤和內存;
- async:文件暫存於內存,而不是直接寫入內存;
- no_root_squash:NFS客戶端鏈接服務端時若是使用的是root的話,那麼對服務端分享的目錄來講,也擁有root權限。顯然開啓這項是不安全的。
- root_squash:NFS客戶端鏈接服務端時若是使用的是root的話,那麼對服務端分享的目錄來講,擁有匿名用戶權限,一般他將使用nobody或nfsnobody身份;
- all_squash:不論NFS客戶端鏈接服務端時使用什麼用戶,對服務端分享的目錄來講都是擁有匿名用戶權限;
- anonuid:匿名用戶的UID值,一般是nobody或nfsnobody,能夠在此處自行設定;
- anongid:匿名用戶的GID值。
NFS客戶端用戶映射:客戶端登錄用戶爲root或者其餘用戶,而後根據服務器端nfs server配置,相應客戶端鏈接映射到nfs服務器端的用戶爲root或者指定用戶(經過anonuid或者anongid來設定)、nfsnobody等。最後這個映射用戶和共享目錄的權限共同影響該客戶端鏈接是否有讀寫權限。
手動設定客戶端、服務器端用戶映射,參數:map_static=/etc/nfs.map
/etc/nfs.map文件映射內容以下:
# remote local
gid 500 1000
uid 500 2003
參考:NFS 學習筆記中關於nfs客戶鏈接用戶身份的描述,沒有驗證過下述的描述:
- 客戶端鏈接時候,對普通用戶的檢查,NO.1若是明確設定了普通用戶被壓縮的身份,那麼此時客戶端用戶的身份轉換爲指定用戶,NO.2若是NFS server上面有同名用戶,那麼此時客戶端登陸帳戶的身份轉換爲NFS server上面的同名用戶,NO.3若是沒有明確指定,也沒有同名用戶,那麼此時 用戶身份被壓縮成nfsnobody
- 客戶端鏈接的時候,對root的檢查,NO.1若是設置no_root_squash,那麼此時root用戶的身份被壓縮爲NFS server上面的root,NO.2若是設置了all_squash、anonuid、anongid,此時root 身份被壓縮爲指定用戶,NO.3若是沒有明確指定,此時root用戶被壓縮爲nfsnobody,NO.4若是同時指定no_root_squash與all_squash 用戶將被壓縮爲 nfsnobody,若是設置了anonuid、anongid將被壓縮到所指定的用戶與組
注:http://desert3.iteye.com/blog/1675522
-------------------------------------------------------------------------------------------------------------