NFS服務器+客戶端配置


NFS:Network File System

使用NFS需要啟用RPC(remoteprocedure call),RPC可以指定每個NFS功能所對應的端口號,重啟RPC后,RPC所管理的所有NFS功能服務都需重新向RPC注冊。

設置NFS需要安裝nfs-utils和portmap程序,使用rpm –q可以查看是否安裝。

  • nfs-utils:提供rpc.nfsd和rpc.mountd兩個daemon與其他document說明文件。

  • rpc.nfsd:管理client是否能夠登入主機,及對登入者ID的辨別。

  • rpc.mountd:管理NFS文件系統,讀取/etc/exports對比client取得相應的權限。

  • portmap:端口映射;在啟動rpc之前做好端口映射工作。

NFS的配置文件:

  • /etc/exports:NFS配置文件

  • /var/lib/nfs/*tab:NFS服務器日志放置路徑;etab記錄共享出來的目錄完整權限設置值;xtab記錄曾經連接到此NFS主機的相關客戶端數據

NFS的兩個命令:

  • /usr/sbin/exportfs:維護NFS共享資源;重新共享/etc/exports變更目錄或將NFS server共享目錄卸載或重新共享

  • /usr/sbin/showmount:在客戶端查看NFS服務器共享出來的目錄資源

/etc/exports配置文件

/etc/exports配置文件說明

格式:
    <輸出目錄> [ 客戶端1 選項(訪問權限,用戶映射,其他)] [客戶端2 選項(訪問權限,用戶映射,其他)]

共享目錄必須使用絕對路徑,權限部分依照不同的權限共享給不同的主機,括號內是設置權限參數的位置,權限不止一個時,使用 , 隔開,主機名和括號連在一起。

主機名設置可以使用網段:192.168.1.0/24或完整IP:192.168.1.23;也可以使用主機名稱,但此主機名稱需要存在於/etc/hosts中或使用DNS可以找到,找到IP即可,主機名支持通配符,如*?

/mnt/sda4/share/images     192.168.23.129(rw)
# 設置共享目錄/mnt/sda4/share/images,僅192.168.23.129主機允許訪問此共享目錄,具有讀寫權限

/mnt/sda4/share/data       192.168.23.129(rw) *(ro)
# 設置共享目錄/mnt/sda4/share/data,192.168.23.129可以讀寫該共享目錄,其他主機只可以讀取該共享目錄

/mnt/sda4/share/icon       192.168.23.129(no_root_squash)
# 設置共享目錄/mnt/sda4/share/icon,僅192.168.23.129可以訪問和讀寫,root登錄時擁有root權限

/mnt/sda4/share/ds         192.168.23.0/24(rw)
# 設置共享目錄/mnt/sda4/share/ds,僅有192.168.23.0/24網段的主機才可訪問和讀寫此目錄文件

/mnt/sda4/share/diaos      *(rw,all_squash,anonuid=500,anongid=500)
# 設置共享目錄/mnt/sda4/share/diaos,所有主機都允許訪問此共享目錄,具有讀寫權限,但他們訪問該共享目錄時,已將其UID、GID設置成500。NFS server主機中UID、GID=500的權限已經設置好

權限參數說明:

  • Rw:read-write可讀寫的權限
  • Ro:read-only只讀權限
  • no_root_squash:登入nfs主機使用共享目錄的用戶,如果是用戶root,對於此共享目錄具有root權限,不建議使用。
  • root_squash:登入nfs主機使用共享目錄的用戶,如果是用戶root,此用戶權限將被壓縮為匿名用戶,其UID和GID都會被壓縮為nobody(nfsnobody)系統賬號的身份。
  • all_squash:共享文件的UID和GID映射匿名用戶anonymous,適合公用目錄。
  • no_all_squash 保留共享文件的UID和GID(默認)。
  • anonuid:xxx;指定nfs服務器/etc/passwd文件中匿名用戶的UID。
  • anongid:xxx;指定nfs服務器/etc/passwd文件中匿名用戶的GID。
  • sync:數據同步寫入到內存與硬盤中。
  • async:數據先暫存於內存中,而非直接寫入硬盤。
  • secure:限制客戶端只能從小於1024的tcp/ip端口連接nfs服務器(默認設置)。
  • insecure:允許客戶端從大於1024的tcp/ip端口連接服務器。
  • wdelay:檢查是否有相關的寫操作,如果有則將這些寫操作一起執行,這樣可以提高效率(默認設置)。
  • no_wdelay:若有寫操作則立即執行,與sync配合使用。
  • hide:在NFS共享目錄中不共享其子目錄。
  • no_hide:共享NFS目錄的子目錄。
  • subtree_check:如果共享/usr/bin之類的子目錄時,強制NFS檢查父目錄的權限(默認)。
  • no_subtree_check:和上面相對,不檢查父目錄權限。
  • subtree:若輸出目錄是一個子目錄,則nfs服務器將檢查其父目錄的權限(默認設置)。
  • no_subtree:即使輸出目錄是一個子目錄,nfs服務器也不檢查其父目錄的權限,這樣可以提高效率。

權限說明:

1.NFS server和NFS client具有相同的UID和賬號

如果NFS server和NFS client具有相同共享文件賬號和相同UID,客戶端登入NFS server時,就會擁有/etc/exports設置的權限

2.NFS server和NFS client具有不同的賬號

如果NFS client不擁有NFS server共享文件賬號,或NFS client的賬號在NFS server不存在,是否可以讀寫共享目錄,需要查看NFS server的權限而定,其身份會變為匿名用戶nobody

3.NFS client的身份為root

默認情況下,客戶端的root身份會被壓縮成匿名用戶nobody

一、服務器端配置

創建共享目錄

mkdir /home/share # 創建分享目錄
chown nobody.nogroup /home/share # 修改分享目錄權限
chmod 777 /home/share

創建或修改/etc/exports配置文件

vim /etc/exports
cat /etc/exports
# /home/share 192.168.102.15(rw,sync) *(ro)
# 配置說明: 對192.168.102.15賦予讀寫權限,其他機器僅有只讀權限。

# 重啟portmap和nfs服務
service portmap restart
service nfs restart
exportfs

重新修改 /etc/exports,執行 exportfs [-aruv] 命令

語法:exportfs [-aruv]

參數說明:

  • -a :全部掛載(或卸除) /etc/exports 檔案內的設定
  • -r :重新掛載 /etc/exports 里面的設定,此外,亦同步更新 /etc/exports 及/var/lib/nfs/xtab 的內容!
  • -u :卸除某一目錄
  • -v :在 export 的時候,將分享的目錄顯示到屏幕上!

服務器端使用showmount命令查詢nfs的共享狀態

showmount -e # 默認查看自己共享的服務,前提是要DNS能解析自己,不然容易報錯
showmount -a # 顯示已經與客戶端連接上的目錄信息

Iptables 防火牆

-A INPUT -p tcp -m state --state NEW -m multiport --dport 111,2049,4001,32764:32767 -j ACCEPT
-A INPUT -p udp -m state --state NEW -m multiport --dport 111,2049,4001,32764:32767 -j ACCEPT

啟動NFS

# 啟動nfs服務器
# service portmap start
# service nfs start
# 查詢nfs服務器狀態
# service portmap status
# service nfs status
# 停止nfs服務器
# 停止nfs運行時,需要先停止nfs服務再停止portmap服務,對於系統中有其他服務(如NIS)需要使用時,不需要停止portmap服務
# service nfs stop
# service portmap stop
/etc/init.d/portmap start  # 啟動RPC進程,為NFS提供端口
/etc/init.d/nfs start
/etc/init.d/nfslock start  # 來控制文件一致性

# 設置nfs服務器的自動啟動狀態
chkconfig --list portmap
chkconfig --list nfs
# 設置portmap和nfs服務在系統運行級別3和5自動啟動。
chkconfig --level 35 portmap on
chkconfig --level 35 nfs on

啟動自動掛載nfs文件系統

格式:
<server>:</remote/export> </local/directory> nfs < options> 0 0

# 修改 /etc/fstab 文件
vim /etc/fstab

二、客戶端配置

/etc/init.d/portmap start # 開啟客戶端的RPC
/etc/init.d/nfslock start # 開啟客戶端的nfslock(與服務器端對應)

# showmount –e nfs服務器IP
showmount –e 192.168.23.128[S2] # 檢查一下RPC是否開啟

# nfs掛載 格式:mount nfs服務器IP:共享目錄 本地掛載點目錄
mkdir -p /mnt/share/client/images # 創建掛載目錄
mount -t nfs 192.168.23.128:/mnt/sda4/share/b /mnt/share/client/images # 設置共享掛載點

mount | grep nfs

# 設置成開機啟動掛載
# 修改/etc/fstab文件
vim /etc/fstab
# 192.168.23.128:/mnt/sda4/share/images  /mnt/share/client/images  nfs  defaults,rw   0 0
# 可以使用autofs設置客戶端需要時自動掛載,不需要時若干分鍾后自動卸載,還可在/etc/fstab或客戶端手動掛載時設置一些參數,方便客戶端使用。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM