第一,首先在服务器上装 nfs-utils 和libs 两个rpm文件包可以 yum源进行yum -y install nfs-utils*
第二, 建立要共享的文件夹 如在 mkdir /it 设置改文件共享 。
第三, 设置配置文件 /etc/exports 打开文件里面是空的 设置格式 /it 192.168.0.0(网段或者ip地址都可以)(权限)
數值 | 內容說明 |
rwro | 該目錄分享的權限是可讀寫 (read-write) 或唯讀 (read-only),但最終能不能讀寫,還是與檔案系統的 rwx及身份有關。 |
syncasync | sync 代表資料會同步寫入到記憶體與硬碟中,async 則代表資料會先暫存於記憶體當中,而非直接寫入硬碟! |
no_root_squashroot_squash | 用戶端使用 NFS 檔案系統的帳號若為 root 時,系統該如何判斷這個帳號的身份?預設的情況下,用戶端 root 的身份會由 root_squash 的設定壓縮成 nfsnobody,如此對伺服器的系統會較有保障。但如果你想要開放用戶端使用 root 身份來操作伺服器的檔案系統,那麼這裡就得要開 no_root_squash 才行! |
all_squash | 不論登入 NFS 的使用者身份為何, 他的身份都會被壓縮成為匿名使用者,通常也就是 nobody(nfsnobody) 啦! |
anonuidanongid | anon 意指 anonymous (匿名者) 前面關於 *_squash 提到的匿名使用者的 UID 設定值,通常為 nobody(nfsnobody),但是你可以自行設定這個 UID 的值!當然,這個 UID 必需要存在於你的 /etc/passwd 當中!anonuid 指的是 UID 而 anongid 則是群組的 GID 囉。 |
這是幾個比較常見的權限參數,如果你有興趣玩其他的參數時,請自行 man exports 可以發現很多有趣的資料。接下來我們利用上述的幾個參數來實際思考一下幾個有趣的小習題:
例題一:讓 root 保有 root 的權限 我想將 /tmp 分享出去給大家使用,由於這個目錄本來就是大家都可以讀寫的,因此想讓所有的人都可以存取。此外,我要讓 root 寫入的檔案還是具有 root 的權限,那如何設計設定檔? 答:
主機名稱可以使用萬用字元,上頭表示無論來自哪裡都可以使用我的 /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 (第一章的例題建立的群組) 的用戶才能夠讀寫,其他來源則只能讀取。 答:
上面的例子說的是,當我的 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 才具有完整的權限時。 答:
這樣就設定完成了!而且,只有 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 进行查看是否挂载成功。