1. 服務端安裝nfs
yum -y install nfs-utils rpcbind
2.編輯/etc/exports
/etc/exports文件內容格式:
<輸出目錄> [客戶端1 選項(訪問權限,用戶映射,其他)] [客戶端2 選項(訪問權限,用戶映射,其他)]
a. 輸出目錄:
輸出目錄是指NFS系統中需要共享給客戶機使用的目錄;
b. 客戶端:
客戶端是指網絡中可以訪問這個NFS輸出目錄的計算機
客戶端常用的指定方式
-
指定ip地址的主機:192.168.0.200
-
指定子網中的所有主機:192.168.0.0/24 192.168.0.0/255.255.255.0
-
指定域名的主機:david.bsmart.cn
-
指定域中的所有主機:*.bsmart.cn
-
所有主機:*
c. 選項:
選項用來設置輸出目錄的訪問權限、用戶映射等。
NFS主要有3類選項:
訪問權限選項
-
設置輸出目錄只讀:ro
-
設置輸出目錄讀寫:rw
用戶映射選項
-
all_squash:將遠程訪問的所有普通用戶及所屬組都映射為匿名用戶或用戶組(nfsnobody);
-
no_all_squash:與all_squash取反(默認設置);
-
root_squash:將root用戶及所屬組都映射為匿名用戶或用戶組(默認設置);
-
no_root_squash:與rootsquash取反;
-
anonuid=xxx:將遠程訪問的所有用戶都映射為匿名用戶,並指定該用戶為本地用戶(UID=xxx);
-
anongid=xxx:將遠程訪問的所有用戶組都映射為匿名用戶組賬戶,並指定該匿名用戶組賬戶為本地用戶組賬戶(GID=xxx);
其它選項
-
secure:限制客戶端只能從小於1024的tcp/ip端口連接nfs服務器(默認設置);
-
insecure:允許客戶端從大於1024的tcp/ip端口連接服務器;
-
sync:將數據同步寫入內存緩沖區與磁盤中,效率低,但可以保證數據的一致性;
-
async:將數據先保存在內存緩沖區中,必要時才寫入磁盤;
-
wdelay:檢查是否有相關的寫操作,如果有則將這些寫操作一起執行,這樣可以提高效率(默認設置);
-
no_wdelay:若有寫操作則立即執行,應與sync配合使用;
-
subtree:若輸出目錄是一個子目錄,則nfs服務器將檢查其父目錄的權限(默認設置);
-
no_subtree:即使輸出目錄是一個子目錄,nfs服務器也不檢查其父目錄的權限,這樣可以提高效率;
關於權限的分析
1. 客戶端連接時候,對普通用戶的檢查
a. 如果明確設定了普通用戶被壓縮的身份,那么此時客戶端用戶的身份轉換為指定用戶;
b. 如果NFS server上面有同名用戶,那么此時客戶端登錄賬戶的身份轉換為NFS server上面的同名用戶;
c. 如果沒有明確指定,也沒有同名用戶,那么此時 用戶身份被壓縮成nfsnobody;
2. 客戶端連接的時候,對root的檢查
a. 如果設置no_root_squash,那么此時root用戶的身份被壓縮為NFS server上面的root;
b. 如果設置了all_squash、anonuid、anongid,此時root 身份被壓縮為指定用戶;
c. 如果沒有明確指定,此時root用戶被壓縮為nfsnobody;
d. 如果同時指定no_root_squash與all_squash 用戶將被壓縮為 nfsnobody,如果設置了anonuid、anongid將被壓縮到所指定的用戶與組;
應用舉例:
/cbak x.x.x.35/255.255.255.240(rw,no_root_squash,no_all_squash,sync)
指定ip段可訪問當前系統指定目錄/cbak,並擁有讀寫權限,root的用戶未作限制可正常使用。
vi /etc/exports /home/share 192.168.x.xxx(rw,all_squash,anonuid=0,anongid=0)
啟動服務,並設置開機啟動
service rpcbind start service nfs start chkconfig --level 2345 rpcbind on chkconfig --level 2345 nfs on
3.客戶端配置
安裝必須的yum包:
yum -y install nfs-utils rpcbind
創建目錄:
mkdir /share
查看服務端共享的目錄:
showmount -e 202.5.16.xxx
掛載共享目錄到本地,並測試讀寫:
mount -t nfs 202.5.16.xxx:/share /share
cd /share && touch a
設置開機自動掛載:
vi /etc/fstab
202.5.16.xxx:/share /share nfs defaults 0 0
查看uid,gid 使用命令 cat /etc/passwd