NFS知識總結1

來源:互聯網
上載者:User

另一篇較好的NFS參考資源:  http://wenku.baidu.com/view/394e852ded630b1c59eeb5a3.html

 

1 NFS(Network File System)網路檔案系統,是一種Distributed File System,允許網路中不同作業系統的電腦之間共用外設、

檔案等,NFS在檔案傳送和通訊過程中依賴與RPC(Remote Procedure Call)

2 RPC 遠端程序呼叫,能使得用戶端執行其他系統程式的一種機制

 

3  NFS安裝配置及使用(Debian)

     (1) 環境描述

        1>:網路環境

        NFS server: 192.168.102.47

        NFS client: 192.168.102.15

        NFS client: 192.168.102.61

        2>:軟體版本

        nfs-common     5-20

        nfs-kernel-server     1.0.9-5

        portmap     1.0.9-5

    (2) 安裝

       1>:服務端  aptitude install nfs-common nfs-kernel-server portmap

       2>:用戶端  aptitude install nfs-common nfs-kernel-server portmap

 

    (3) 啟動停止  /etc/init.d/nfs-kernel-server start/stop/restart

    (4) 服務端配置 

       1>:建立共用目錄  mkdir /home/share    chown nobody.nogroup /home/share

       2>:建立或修改 /etc/exports 設定檔

 

     這個檔案的內容非常簡單,每一行由拋出路徑,客戶名列表以及每個客戶名後緊跟的訪問選項構成:


        [共用的目錄] [主機名稱或IP(參數,參數)] 

其中參數是可選的,當不指定參數時,nfs將使用預設選項。預設的共用選項是 sync,ro,root_squash,no_delay。

當主機名稱或IP地址為空白時,則代表共用給任意客戶機提供服務。

當將同一目錄共用給多個客戶機,但對每個客戶機提供的許可權不同時,可以這樣:


        [共用的目錄] [主機名稱1或IP1(參數1,參數2)] [主機名稱2或IP2(參數3,參數4)]

下面是一些NFS共用的常用參數:

 


        ro                      唯讀訪問 
rw 讀寫訪問
sync 所有資料在請求時寫入共用
async NFS在寫入資料前可以相應請求
secure NFS通過1024以下的安全TCP/IP連接埠發送
insecure NFS通過1024以上的連接埠發送
wdelay 如果多個使用者要寫入NFS目錄,則歸組寫入(預設)
no_wdelay 如果多個使用者要寫入NFS目錄,則立即寫入,當使用async時,無需此設定。
hide 在NFS共用目錄中不共用其子目錄
no_hide 共用NFS目錄的子目錄
subtree_check 如果共用/usr/bin之類的子目錄時,強制NFS檢查父目錄的許可權(預設)
no_subtree_check 和上面相對,不檢查父目錄許可權
all_squash 共用檔案的UID和GID映射匿名使用者anonymous,適合公用目錄。
no_all_squash 保留共用檔案的UID和GID(預設)
root_squash root使用者的所有請求映射成如anonymous使用者一樣的許可權(預設)
no_root_squas root使用者具有根目錄的完全管理存取權限
anonuid=xxx 指定NFS伺服器/etc/passwd檔案中匿名使用者的UID
anongid=xxx 指定NFS伺服器/etc/passwd檔案中匿名使用者的GID

設定檔/etc/exports內容如下:

 


        $ cat /etc/exports

/home/share 192.168.102.15(rw,sync) *(ro)

配置說明: 對192.168.102.15賦予讀寫權限,其他機器僅有唯讀許可權。

   3>:重啟nfs服務

         4>:在客戶機上查看nfs資源共用情況
   showmount -e 192.168.102.47

         5>:使用mount命令掛載共用資源   
mount 192.168.102.47:/home/share /mnt

         6>:是不是我們每次修改了設定檔都需要重啟nfs服務呢? 這個時候我們就可以用exportfs命令重新掃描/etc/exports檔案,來使改動立刻生效。比如:

 


        # exportfs -au 卸載所有共用目錄

# exportfs -rv 重新共用所有目錄並輸出詳細資料

exportfs 命令有軟體包 nfs-kernel-server 提供,詳細的 exportfs 命令說明請查看:

 


        man exportfs

當完成資源共用, 我們如何知道發布了哪些許可權呢?這時我們可以查看 /var/lib/nfs/etab 檔案,它是有 exportfs 命令根據 /etc/exports 產生的。

 


        # cat /var/lib/nfs/etab

/home/share 192.168.102.15(rw,sync,wdelay,hide,nocrossmnt,secure,
root_squash,no_all_squash,subtree_check,secure_locks,acl,mapping=identity,
anonuid=65534,anongid=65534)

/home/share *(ro,sync,wdelay,hide,nocrossmnt,secure,root_squash,no_all_squash,
subtree_check,secure_locks,acl,mapping=identity,anonuid=65534,anongid=65534)
(5) 安全問題
1>: Iptables防火牆

如果我們的NFS伺服器在防火牆後邊,則需要在防火強策略中加入如下策略:

 

-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

 

   2>
:使用/etc/host.allow和/etc/host.deny 控制用戶端的訪問

 

/etc/hosts.allow和/etc/hosts.deny這兩個檔案是tcpd伺服器的設定檔,tcpd伺服器可以控制外部IP對本機服務的訪問。這兩個設定檔的格式如下:

 


        #服務進程名:主機列表:當規則匹配時可選的命令操作

server_name:hosts-list[:command]

/etc/hosts.allow控制可以訪問原生IP地址,/etc/hosts.deny控制禁止訪問原生IP。如果兩個檔案的配置有衝突,以
/etc/hosts.deny為準。下面是一個/etc/hosts.allow的樣本:

 


        ALL:127.0.0.1         #允許本機訪問本機所有服務進程

smbd:192.168.0.0/255.255.255.0 #允許192.168.0.網段的IP訪問smbd服務

ALL關鍵字匹配所有情況,EXCEPT匹配除了某些項之外的情況,PARANOID匹配你想控制的IP地址和它的網域名稱不匹配時(網域名稱偽裝)的情況。

比如,在伺服器的 /etc/hosts.deny 檔案作如下設定:

 


        # cat /etc/hosts.deny

portmap:192.168.102.15

然後在客戶機192.168.102.15上載入共用目錄

 


        #  mount 192.168.102.47:/home/share /mnt

mount to NFS server '192.168.102.47' failed.

我們發現現在已經無法載入共用目錄的。

(6) 資源使用

   1>:啟動時自動掛載

 

修改客戶機的 /etc/fstab檔案,加入類似如下行:

 


        192.168.102.47:/home/share      /mnt    nfs     rsize=8192,wsize=8192,timeo=14,intr

重啟客戶機,即可實現系統啟動時自動掛栽共用資源

   2>:使用autofs實現資源掛在

 

autofs 使用 automount 守護進程來管理你的掛載點,它只在檔案系統被訪問時才動態地掛載它們。
autofs 查詢主設定檔 /etc/auto.master 來決定要定義哪些掛載點。然後,它使用適用於各個掛載點的參數來啟動 automount 進程。主配置中的每一行都定義一個掛載點,然後用單獨的設定檔定義在該掛載點下要掛載的檔案系統。

安裝 autofs

 


        # aptitude  install autofs

修改/etc/auto.master檔案, 加入如下內容:

 


        /mnt      /etc/auto.nfs

建立 /etc/auto.nfs 檔案內容如下:

 


        nfs -rw,soft,intr,rsize=8192,wsize=8192 192.168.102.47:/home/share

這樣,每當您進入 /mnt/nfs 目錄時,系統都會嘗試將伺服器的共用資源掛栽到該目錄上。應當注意nfs目錄是由 automount 動態地建立的,它不應該在客戶機器上實際存在。

 


        tonybox2:/# cd /mnt
tonybox2:/mnt# ls
tonybox2:/mnt# cd nfs
tonybox2:/mnt/nfs# ls
123
tonybox2:/mnt/nfs# ls -l
total 4
-rw-r--r-- 1 nobody nogroup 6 2006-08-22 07:50 123

tonybox2:/mnt/nfs#

如果修改了/etc/auto.master主設定檔,則需要運行

 


        #/etc/init.d/autofs reload

對其進行重新載入

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.