Chapter 17 網路檔案系統 (NFS)

網路檔案系統 (NFS) 是一種在網路中分享檔案的方式,所分享的檔案就好像放置在用戶端本機的硬碟上一樣。 Red Hat Linux 可以同時當作一部 NFS 伺服器以及一部 NFS 用戶端機器,也就是說它可以匯出檔案系統給其他的系統,以及掛載由其他機器所匯出的檔案系統。

1. 為何要使用 NFS?

在網路中, 許多使用者共享檔案是很有用的,舉例來說,一組從事同一專案的可以使用 NFS 檔案系統中的一個共享目錄(一般稱為 NFS 共享),並將其掛載在每一個使用者本機的 /myproject 目錄下。 如果要存取共享的檔案,使用者只要進入本機的 /myproject 目錄,並不需要輸入密碼或指令,使用者會覺得這個目錄就好像存在本機上一樣。

 

2. 掛載 NFS 檔案系統

使用 mount 指令來掛載另一部機器上一個共享的 NFS 目錄:

mount shadowman.example.com:/misc/export /misc/local

注意:本機上的掛載點目錄(以上例子中的 /misc/local)必須存在。

在這個指令中,shadowman.example.com 就是 NFS 檔案伺服器的主機名稱,/misc/export 就是 shadowman 主機所匯出的目錄,而 /misc/local 就是用來掛載到本機的位置。 在執行 mount 指令之後,用戶端的使用者便可執行 ls /misc/local 指令來列出位於 shadowman.example.com 主機上的 /misc/export 目錄中的檔案。

2.1. 使用 /etc/fstab 來掛載 NFS 檔案系統

另一個從其他機器掛載一個 NFS 共享資源的方法是增加一行到 /etc/fstab 檔案中,該行必須含有 NFS 伺服器的主機名稱、該伺服器所匯出的目錄以及要掛載 NFS 共享的本機目錄。 您必須以 root 身份才能修改 /etc/fstab 檔案。

The general syntax for the line in /etc/fstab 檔案中該行的一般語法如下:

server:/usr/local/pub    /pub   nfs    rsize=8192,wsize=8192,timeo=14,intr

掛載點 /pub 必須存在於用戶端機器中。 在將此行加入到用戶端系統的 /etc/fstab 檔案後,請在 shell 提示符號下輸入 mount /pub,將會從伺服器掛載共享目錄到 /pub 掛載點下。

 

3. 匯出 NFS 檔案系統

從 NFS 伺服器分享檔案稱為匯出目錄,可以使用 NFS 伺服器設定工具 來設定系統當作一部 NFS 伺服器。

如要使用 NFS 伺服器設定工具,您必須執行 X 視窗系統,並擁有 root 的權限,且已安裝 redhat-config-nfs RPM 套件。 如要啟動該應用程式,請選擇面板上的 『主選單按鈕』 => 『系統設定』 => 『伺服器設定』 => 『NFS 伺服器』,或輸入 redhat-config-nfs 指令。

圖形 15-1. NFS 伺服器設定工具

如要新增一個 NFS 共享,請點選 新增 按鈕,將會出現如 圖形 15-2 所示的對話窗。

基本的』 標簽頁需要下列的資訊:

圖形 15-2. 新增共享

您可以在 『一般選項』 的標簽頁中設定下列的選項:

您可以在 『使用者存取』 的標簽頁中設定下列選項:

          1. Root squash: 對應用戶端的root為本機的nobody的使用者與群組,使得用戶端上的 root 沒有 NFS 伺服器上的 root 權限。

          2. 假如選擇這個選項,root 並不對應到nobody使用者,而且用戶端機器上的 root 也會擁有server端 root 的相同權力。 這個選項等同於 no_root_squash

 

如要修改一個既有的 NFS 共享,請從清單中選取它,再點選 屬性 的按鈕。 如要刪除一個既有的 NFS 共享,請從清單中選取它,再點選 刪除 的按鈕。

在點選 確定 來新增、編輯或刪除清單中的一個 NFS 共享後,變更將立即生效 — 伺服器系統程式將重新啟動,而且舊的設定檔案也儲存為 /etc/exports.bak,新的設定將會寫入到 /etc/exports 檔案中。

NFS 伺服器設定工具 直接讀取並寫入到 /etc/exports 設定檔案,因此在使用這個工具之後,您可以手動編輯這個檔案,而且在手動編輯完該檔案後,也可以使用這個工具來做設定。

 

3.1. 命令列設定

假如您較喜歡使用一個文字編輯器來編輯設定檔案,您可以直接修改設定檔案。

/etc/exports 檔案控制 NFS 伺服器要匯出的目錄,它的格式如下:

directory hostname(options)

directory:

        可以是任何已掛在 / 的子目錄。包括CD-ROM FLOPPY

hostname:

        主機名稱以別名表示( /etc/hosts 中設定),否則以完整的FQDN 表示。可以設定給一台以上的主機分享。變化如下:

 

options:

insecure 允許主機不需認證即可存取
secure 主機必需經RPC認證才可存取
root_squash 將客戶端的root(uid 0) 對應到伺服端的nobody(uid 99)
no_root_squash 不對應,所以客戶端的root 擁有server root 的相同權力
ro 唯讀,是預設值。
rw 允許讀、寫
link_ablolute 將檔案系統內符號連結的目的地從絕對路徑換成相對路徑,掛載在另一主機後才能正確指向連結的目的地。
all_squash 所有client 端的user 都對應成 nobody(一般設定)
no_all_squash 和上述設定相反。
sqush_uids Nobody 對應的 uid清單
sqush_gids Nobody 對應的 gid清單
anonuid nobody 帳號設 uid
anongid nobody 帳號設 gid
noaccess 設定某些目錄為client 不能使用。

設定範例:

/temp/ftp        proxy(rw,no_root_squash) ftp2(ro)

/temp/ftp 這個目錄,只開放給 proxyftp2這兩台電腦,proxy上的root 擁有server 端的root 權限;ftp2上的user只有讀取的能力

 

/home/students            (ro,all_squash)

 /home/students 開放給所有的主機,但只有讀取的權限。而用戶端上的user 都對應到server nobody

 

/tmp                  163.17.9.0/255.255.255.0

/tmp 只允許 163.17.9.0/255.255.255.0 這子網路的電腦使用。

 

/misc/export     speedy.example.com(rw)

將允許來自 speedy.example.com 主機的使用者以讀寫的權限掛載 /misc/export ,目錄。

 

每次您更改完 /etc/exports 檔案,您必須通知 NFS 系統程式,或使用下列指令來重新載入設定檔案:

/sbin/service nfs reload

 

注意: 請特別小心 /etc/exports 檔案中的空白字元,假如主機名稱與括號中的選項間沒有空白字元,這些選項只適用於該主機名稱,假如有空白存在的話,這些選項則適用於其餘的所有人。 舉例來說,請仔細檢查下列這兩個例子:

/misc/export speedy.example.com(rw,sync)
/misc/export speedy.example.com (rw,sync)

第一行允許來自 speedy.example.com 的使用者擁有讀寫的存取權限,而拒絕所有其他的使用者。

第二行允許來自 speedy.example.com 的使用者擁有僅能讀取的權限(預設值),而允許所有其他人讀寫的存取權限。

 

3.2. 啟動與停止伺服器

在匯出 NFS 檔案系統的伺服器上,必須執行 nfs 服務。

使用下列指令來檢視 NFS 系統程式的狀態:

/sbin/service nfs status

使用下列指令來啟動 NFS 系統程式:

/sbin/service nfs start

使用下列指令來停止 NFS 系統程式:

/sbin/service nfs stop

如要在開機時啟動 nfs 服務,請使用下列指令:

/sbin/chkconfig --level 345 nfs on

您也可以使用 chkconfig, ntsysv系統服務設定工具 來設定那些服務要在開機時啟動。

 

4. 其他的資源

4.1. 已安裝的說明文件

4.2. 延伸閱讀