NFS

NFS初探


  • NFS概述

  • NFS工作流程

  • NFS Server端設置

  • NFS工具與命令

  • NFS配置實例


NFS概述

NFS是什么?

NFS,network file system(網絡文件系統)的縮寫,是一種實現文件共享的實現方式。

NFS的功能是什么

NFS基于RPC協議,實現遠程系統調用,共享文件資源。

NFS工作流程

nfs

RPC,Remote Procedure Call Protocol,遠程過程調用協議,是實現本地調用遠程主機實現系統調用的協議。
portmapper:負責分配RPC服務器的端口,并在客戶端請求時,負責響應目的RPC服務器端口返回給客戶端,工作在tcp與udp的111端口上。
mountd:是nfs服務的認證服務的守護進程,客戶端在收到返回的真正端口時,就會去連接mountd,認證取得令牌。
nfsd:nfs的守護進程,負責接收到用戶的調用請求后與內核發出請求并得到調用結果響應給用戶。
idmapd:是NFS的一個程序,用來負責遠程客戶端創建文件后的權限問題。

nfs Server:
    nfsd:NFS的守護進程,工作在tcp與udp的2049端口上。
    mountd:NFS用來驗證客戶端信息的守護進程,工作在隨機端口。
    rquotad:磁盤限額進程。
    lockd:文件鎖。
    idmapd:權限映射。

NFS Server端

所需安裝包

rpcbind:提供rpc服務(mapping)
nfs-utils:提供nfs,mountd與其他相關程序。

NFS服務器端配置

相關文件:
    /etc/exports:nfs的主要設定文件。
    /var/lib/nfs/*tab:設定記錄文件。
        etab:共享目錄的完整權限設定。
        xtab:曾經連接的客戶端資料。
    /usr/sbin/exportfs:NFS分享資源命令,可以用來重新獲取共享文件設定,掛載,卸載等。
    /usr/sbin/showmount:用來查看遠程主機的共享信息。

exports文檔設定格式

/PATH/TO/NFS_DIR    CLITNES_IP1(OPTION1,OPTION2...)        CLITNES_IP2(OPTION1,OPTION2...)    ...

例如:     /tmp/nfs    192.168.1.1(rw,root_squash,anonuid=50,anongid=50) 192.168.1.2(ro) 
            指定了共享文件夾為/tmp/nfs,192.168.1.1有讀寫權限,禁止root用戶登錄,使用的賬戶身份為uid/gid為50的賬號。
            192.168.1.2只有ro權限,并使用默認身份,nobady。

常用的OPTION:
        rw / ro                                讀寫/只讀
        sync / async                        同步傳輸/異步傳輸
        root_squash / no_root-squash        壓縮root用戶權限/不壓縮root用戶權限
        all_squash                            所有用戶都壓縮權限。
        anonuid=# / anongid=#                指定使用的用戶或組

權限相關:

當遠程用戶訪問共享文件夾時是使用什么權限呢?如果創建文件那么屬主和屬組又是什么呢?  
nfs默認是使用你本地主機當前用戶UID與GID相對應的身份來使用,如果遠程服務端沒有此用戶或組就會以數字的形式呈現。  

如果是root用戶,那么在遠程主機上肯定就是使用root了,因為root默認的uid gid都是0!
這樣就太危險了,所以如果使用了root訪問,NFS會自動壓縮權限為最小權限nfsnobady。

當本地用戶使用不一樣的名字,UID卻是相同的創建文件,會通過idmapd這個進程來映射,所以你在遠程看到的還會是你原來的name。

當你將權限都設定完成后記得去更改服務器端文件夾的權限,推薦使用acl來設定,因為你的權限其實為 "用戶權限與文件夾權限的交集"。

NFS工具與命令

showmount:查看服務器端共享文件夾狀態的。

showmount [-ae] [hostname|ip]
            -a:顯示目前服務端與用戶端的NFS連線狀態。
            -e:顯示目標服務器端exports所分享的目錄資料。

expartfs:重新讀取expart配置,無需重啟服務。

expartfs [-aruv] 
            -a:全部讀取或者取消/etc/export配置。
            -r:重新讀取export并更新/etc/exports /var/libnfs/xtab
            -u:卸載目錄。
            -v:顯示重讀或卸載詳細信息到屏幕

NFS配置實例:

配置:

host1(192.168.1.1):
[root@host1 nfs]# service nfs start                啟動nfs服務。
Starting NFS services:                                     [  OK  ]            啟動exportfs    
Starting NFS quotas:                                       [  OK  ]            啟動quotas
Starting NFS mountd:                                       [  OK  ]            啟動mountd
Starting NFS daemon:                                       [  OK  ]            啟動nfsd
Starting RPC idmapd:                                       [  OK  ]            啟動idmapd
[root@host1 ~]# echo '/tmp/nfs  192.168.1.2(rw,no_root_squash)' >> /etc/exports     寫入配置,不使用root權限壓縮。
[root@host1 ~]# mkdir -pv /tmp/nfs            創建共享文件夾。
[root@host1 ~]# exportfs -arv                讀入配置。
exporting 192.168.1.2:/tmp/nfs                

host2(192.168.1.2):
[root@host2 ~]# showmount -e 192.168.1.1        查看192.168.1.1的export信息。
Export list for 192.168.1.1:                
/tmp/nfs 192.168.1.2                     192.168.1.1的內容。
[root@host2 ~]# mount -t nfs 192.168.1.1:/tmp/nfs /tmp      掛載共享文件夾。

測試:

[root@host2 tmp]# touch test        root身份創建test
[root@host2 tmp]# ll
total 0
-rw-r--r--. 1 root root    0 Apr 25  2016 test        可以看到user group為root

[root@host1 nfs]# ll
total 0
-rw-r--r--. 1 root root 0 Apr 25 19:32 test            服務端查看也為root

[root@host1 tmp]# echo '/tmp/nfs  192.168.1.2(rw,root_squash)' > /etc/exports         覆蓋寫入配置,使用root權限壓縮。
[root@host1 tmp]# exportfs -ar    讀入配置
[root@host1 tmp]# setfacl -m u:nfsnobody:rwx nfs/        設置nfs/的權限,添加acl

[root@host2 tmp]# touch test2        客戶端創建文件test2
[root@host2 tmp]# ll
total 0
-rw-r--r--. 1 root root    0 Apr 25  2016 test
-rw-r--r--. 1 nfsnobody nfsnobody 0 Apr 25 19:45 test2        可以看到user group為nfsnobody的默認屬主屬組。

[root@host1 ~]# echo '/tmp/nfs  192.168.1.2(rw,root_squash,anonuid=500)' > /etc/exports  覆蓋寫入配置,指定登陸uid。
[root@host1 ~]# setfacl -m u:xiao:rwx /tmp/nfs/  設置權限,添加acl
[root@host1 ~]# exportfs -ar        讀入配置。

[xiao@host2 tmp]$ touch test3    客戶端使用對應UID用戶創建文件。
[xiao@host2 tmp]$ ll
total 0
-rw-r--r--. 1 root root    0 Apr 25  2016 test
-rw-r--r--. 1 nfsnobody nfsnobody 0 Apr 25 19:45 test2
-rw-rw-r--. 1 xiao      xiao      0 Apr 25  2016 test3        user group 為 xiao

原創文章,作者:Net18_肖肖,如若轉載,請注明出處:http://www.www58058.com/15665

(0)
Net18_肖肖Net18_肖肖
上一篇 2016-04-28
下一篇 2016-04-28

相關推薦

  • N26 第一周博客作業

    1、描述計算機的組成及其功能。 現代的計算機大多遵循的是 馮·諾依曼 計算機體系,主要有如下幾個組成部分: 運算器      :也被稱為算術邏輯單元(ALU),可視為計算機的大腦,它主要進行算術運算和邏輯運算; 邏輯控制器  :則負責將計算機的其他部件聯系起來,其功能是從存儲設備和輸入輸出設備中讀取指令和數據,對指令進…

    Linux干貨 2017-01-08
  • 第一周博客作業

       第一次自己動手寫博客,而不是轉載或者收藏,還是滿忐忑的,希望是一個好的開始,以下內容均為依照記憶或者說學習到的知識總結,之后會另寫一篇博文根據網絡查詢到的更嚴謹完整的答案作為總結。一、描述計算機的組成及其功能。答:計算機主要有五個部分組成,分別是:運算器、控制器、存儲器、輸入設備、輸出設備。  1、控制器為整個計算機工作中的核心,負責調度所有組件之間的…

    Linux干貨 2016-12-04
  • 文本過濾、文本查找工具應用示例

    文本過濾、文本查找工具應用示例 1.顯示當前系統上root、fedora或user1用戶的默認shell [root@localhost ~]# cat /etc/passwd|grep “^root\>\|^fedora\>\|^user1\>”|cut -d: -f7 /bin/bash /bin/bash /bin/bash 2.找出…

    Linux干貨 2017-07-30
  • Linux用戶和組相關知道小結

    用戶和組主要配置文件相關的參數,以及這些文件管理常用的命令。有很多的不足的地方。望大家指導。

    Linux干貨 2017-11-18
  • linux命令格式及基礎命令

    linux命令格式及基礎命令介紹 命令格式 command [options] [arguments] * command:命令 * options: –單詞 或 -單字 * argument:參數(檔案名稱或其他) 基礎命令介紹 ifconfig 用于顯示或設置網絡設備 語法 ifconfig [網絡設備][down up -allmulti -arp …

    Linux干貨 2017-12-03
  • Linux Zabbix監控

                           Linux Zabbix監控 zabbix監控系統:    zabbix是基于WEB界面的提供分布式系統監視以及網絡監視功能的企業級的開源解決方案。zab…

    Linux干貨 2016-11-19

評論列表(2條)

  • tomshen
    tomshen 2016-06-09 17:40

    配置完成后 客戶端要怎樣訪問服務器端呢?

    • Net18_肖肖
      Net18_肖肖 2016-06-09 17:45

      @tomshen一般通過將共享的文件夾掛載到本地的方式 如:
      mount -t nfs serverip:/dir mountpoint

欧美性久久久久