網路檔案系統 (NFS) 是一種在網路中分享檔案的方式,所分享的檔案就好像放置在用戶端本機的硬碟上一樣。 Red Hat Linux 可以同時當作一部 NFS 伺服器以及一部 NFS 用戶端機器,也就是說它可以匯出檔案系統給其他的系統,以及掛載由其他機器所匯出的檔案系統。
在網路中, 許多使用者共享檔案是很有用的,舉例來說,一組從事同一專案的可以使用 NFS 檔案系統中的一個共享目錄(一般稱為 NFS 共享),並將其掛載在每一個使用者本機的 /myproject 目錄下。 如果要存取共享的檔案,使用者只要進入本機的 /myproject 目錄,並不需要輸入密碼或指令,使用者會覺得這個目錄就好像存在本機上一樣。
使用 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 目錄中的檔案。
另一個從其他機器掛載一個 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 掛載點下。
從 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 設定檔案,因此在使用這個工具之後,您可以手動編輯這個檔案,而且在手動編輯完該檔案後,也可以使用這個工具來做設定。
假如您較喜歡使用一個文字編輯器來編輯設定檔案,您可以直接修改設定檔案。
/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 這個目錄,只開放給 proxy、ftp2這兩台電腦,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 |
/misc/export speedy.example.com(rw,sync) /misc/export speedy.example.com (rw,sync) |
在匯出 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 或 系統服務設定工具 來設定那些服務要在開機時啟動。