第一,首先在服务器上装 nfs-utils 和libs 两个rpm文件包可以 yum源进行yum -y install nfs-utils*   

第二, 建立要共享的文件夹 如在 mkdir  /it  设置改文件共享 。

第三, 设置配置文件 /etc/exports   打开文件里面是空的 设置格式 /it   192.168.0.0(网段或者ip地址都可以)(权限)

數值 內容說明
rw
ro
該目錄分享的權限是可讀寫 (read-write) 或唯讀 (read-only),但最終能不能讀寫,還是與檔案系統的 rwx及身份有關。
sync
async
sync 代表資料會同步寫入到記憶體與硬碟中,async 則代表資料會先暫存於記憶體當中,而非直接寫入硬碟!
no_root_squash
root_squash
用戶端使用 NFS 檔案系統的帳號若為 root 時,系統該如何判斷這個帳號的身份?預設的情況下,用戶端 root 的身份會由 root_squash 的設定壓縮成 nfsnobody,如此對伺服器的系統會較有保障。但如果你想要開放用戶端使用 root 身份來操作伺服器的檔案系統,那麼這裡就得要開 no_root_squash 才行!
all_squash 不論登入 NFS 的使用者身份為何, 他的身份都會被壓縮成為匿名使用者,通常也就是 nobody(nfsnobody) 啦!
anonuid
anongid
anon 意指 anonymous (匿名者) 前面關於 *_squash 提到的匿名使用者的 UID 設定值,通常為 nobody(nfsnobody),但是你可以自行設定這個 UID 的值!當然,這個 UID 必需要存在於你的 /etc/passwd 當中!anonuid 指的是 UID 而 anongid 則是群組的 GID 囉。

這是幾個比較常見的權限參數,如果你有興趣玩其他的參數時,請自行 man exports 可以發現很多有趣的資料。接下來我們利用上述的幾個參數來實際思考一下幾個有趣的小習題:

例題一:讓 root 保有 root 的權限

我想將 /tmp 分享出去給大家使用,由於這個目錄本來就是大家都可以讀寫的,因此想讓所有的人都可以存取。此外,我要讓 root 寫入的檔案還是具有 root 的權限,那如何設計設定檔?

答:
[root@www ~]# vim /etc/exports# 任何人都可以用我的 /tmp ,用萬用字元來處理主機名稱,重點在 no_root_squash/tmp  *(rw,no_root_squash)

主機名稱可以使用萬用字元,上頭表示無論來自哪裡都可以使用我的 /tmp 這個目錄。再次提醒,『 *(rw,no_root_squash) 』這一串設定值中間是沒有空白字元的喔!而 /tmp 與 *(rw,no_root_squash) 則是有空白字元來隔開的!特別注意到那個 no_root_squash 的功能!在這個例子中,如果你是用戶端,而且你是以 root 的身份登入你的 Linux 主機,那麼當你 mount 上我這部主機的 /tmp 之後,你在該 mount 的目錄當中,將具有『root 的權限!』

例題二:同一目錄針對不同範圍開放不同權限

我要將一個公共的目錄 /home/public 公開出去,但是只有限定我的區域網路 192.168.100.0/24 這個網域且加入vbirdgroup (第一章的例題建立的群組) 的用戶才能夠讀寫,其他來源則只能讀取。

答:
[root@www ~]# mkdir /home/public[root@www ~]# setfacl -m g:vbirdgroup:rwx /home/public[root@www ~]# vim /etc/exports/tmp          *(rw,no_root_squash)/home/public  192.168.100.0/24(rw)    *(ro)# 繼續累加在後面,注意,我有將主機與網域分為兩段 (用空白隔開) 喔!

上面的例子說的是,當我的 IP 是在 192.168.100.0/24 這個網段的時候,那麼當我在 Client 端掛載了 Server 端的 /home/public 後,針對這個被我掛載的目錄我就具有可以讀寫的權限~至於如果我不是在這個網段之內,那麼這個目錄的資料我就僅能讀取而已,亦即為唯讀的屬性啦!

需要注意的是,萬用字元僅能用在主機名稱的分辨上面,IP 或網段就只能用 192.168.100.0/24 的狀況,不可以使用 192.168.100.* 喔!

例題三:僅給某個單一主機使用的目錄設定

我要將一個私人的目錄 /home/test 開放給 192.168.100.10 這個 Client 端的機器來使用時,該如何設定?假設使用者的身份是 dmtsai 才具有完整的權限時。

答:
[root@www ~]# mkdir /home/test[root@www ~]# setfacl -m u:dmtsai:rwx /home/test[root@www ~]# vim /etc/exports/tmp          *(rw,no_root_squash)/home/public  192.168.100.0/24(rw)    *(ro)/home/test    192.168.100.10(rw)# 只要設定 IP 正確即可!

這樣就設定完成了!而且,只有 192.168.100.10 這部機器才能對 /home/test 這個目錄進行存取喔!

例題四:開放匿名登入的情況

我要讓 *.centos.vbird 網域的主機,登入我的 NFS 主機時,可以存取 /home/linux ,但是他們存資料的時候,我希望他們的 UID 與 GID 都變成 45 這個身份的使用者,假設我 NFS 伺服器上的 UID 45 與 GID 45 的用戶/群組名稱為 nfsanon。

答:

[root@www ~]# groupadd -g 45 nfsanon[root@www ~]# useradd -u 45 -g nfsanon nfsanon[root@www ~]# mkdir /home/linux[root@www ~]# setfacl -m u:nfsanon:rwx /home/linux[root@www ~]# vim /etc/exports/tmp          *(rw,no_root_squash)/home/public  192.168.100.0/24(rw)    *(ro)/home/test    192.168.100.10(rw)/home/linux   *.centos.vbird(rw,all_squash,anonuid=45,anongid=45)# 如果要開放匿名,那麼重點是 all_squash,並且要配合 anonuid 喔!

特別注意到那個 all_squash 與 anonuid, anongid 的功能!如此一來,當 clientlinux.centos.vbird 登入這部 NFS 主機,並且在 /home/linux 寫入檔案時,該檔案的所有人與所有群組,就會變成 /etc/passwd 裡面對應的 UID 為 45 的那個身份的使用者了!

第四 ,启动服务service nfs start  再次之前要启动service rpcbind  start

 可以再服务器端查看是否共享 exportfs -v

第五 ,安装客户端 rpm -q nfs-utils    没有安装的可以用yum源进行安装yum -y install  nfs-utils

第六 ,客户端进行挂载 mount -t nfs  192.168.0.132:/it    /mnt (挂载目录)

可以用df -h 进行查看是否挂载成功。