NFS為 Network FileSystem 的簡稱
NFS為 Network FileSystem 的簡稱,最早之前是由 Sun 這家公司所發展出來的,他的目的就是想讓不同的機器、不同的操作系統可以彼此分享個別的檔案啦!目前在 Unix Like 當中用來做為 file server 是相當不錯的一個方案喔!基本上, Unix Like 主機連接到另一部 Unix Like 主機來分享彼此的檔案時,使用 NFS 要比 SAMBA 快速且方便的多了!此外, NFS 的設定真的很簡單,幾乎只要記得激活 Remote Procedure Call 這個咚咚 ( 就是 portmap 這個套件啦! ) 就一定可以架設的起來!真是不錯??!不過,如果要達成 Windows 與 Linux 之間的溝通,那么還是以 SAMBA 比較容易啊
當我們的 NFS Server 設定好了分享出來的 /home/sharefile 這個目錄后,其它的 Client 端就可以將這個目錄掛載到自己系統上面的某個掛載點,需要的軟件如下:
portmap 和 nfs 或 nfs-utils,后者就是提供 rpc.nfsd 及 rpc.mountd
rpc.nfsd:這個 daemon 主要的功能就是在管理 Client 是否能夠登入主機的權限啦,其中還包含這個登入者的 ID 的判別
rpc.mountd:這個 daemon 主要的功能,則是在管理 NFS 的檔案系統哩!當 Client 端順利的通過 rpc.nfsd 而登入主機之后,在他可以使用 NFS server 提供的檔案之前,還會經過檔案使用權限 ( 就是那個 -rwxrwxrwx 與 owner, group 那幾個權限啦 ) 的認證程序!他會去讀 NFS 的設定檔 /etc/exports來比對 Client 的權限,當通過這一關之后, Client 就可以取得使用 NFS 檔案的權限啦!(注:這個也是我們用來管理 NFS 分享之目錄的使用權限與安全設定的地方!)
/etc/exports:這個檔案就是 NFS 的主要設定檔了!不過,系統并沒有默認值,所以這個檔案『不一定會存在』,所以您必須要使用 vi 主動的建立起這個檔案喔!我們等一下要談的設定也僅只是這個檔案而已吶!
/usr/sbin/exportfs:這個是維護 NFS 分享資源的指令,我們可以利用這個指令重新分享 /etc/exports 變更的目錄資源、將 NFS Server 分享的目錄卸載或重新分享等等,這個指令是 NFS 系統里面相當重要的一個喔!至于指令的用法我們在底下會再介紹。
/usr/sbin/showmount:這是另一個重要的 NFS 指令。exportfs 是用在 NFS Server 端,而 showmount 則主要用在 Client 端。這個 showmount 可以用來察看 NFS 分享出來的目錄資源喔!
/var/lib/nfs/xtab:這個檔案則是主要的 NFS 的紀錄文件咯!當我們的 NFS 分享出目錄資源后,到底有哪些 Client 端曾經連接上我們的 NFS 主機呢?呵呵!就是看這個檔案的內容即可啰!
[root@test root]# vi /etc/exports
[欲分享的目錄] [主機名稱1或IP1(參數1,參數2)] [主機名稱2或IP2(參數3,參數4)]
參數主要有哪些呢?
rw:可擦寫的權限;
ro:只讀的權限;
no_root_squash:登入 NFS 主機使用分享目錄的使用者,如果是 root 的話,那么對于這個分享的目錄來說,他就具有 root 的權限!這個項目『極不安全』,不建議使用!
root_squash:在登入 NFS 主機使用分享之目錄的使用者如果是 root 時,那么這個使用者的權限將被壓縮成為匿名使用者,通常他的 UID 與 GID 都會變成 nobody 那個系統帳號的身份;
all_squash:不論登入 NFS 的使用者身份為何,他的身份都會被壓縮成為匿名使用者,通常也就是 nobody 啦!
anonuid:前面關于 *_squash 提到的匿名使用者的 UID 設定值,通常為 nobody,但是您可以自行設定這個 UID 的值!當然,這個 UID 必需要存在于您的 /etc/passwd 當中!
anongid:同 anonuid ,但是變成 group ID 就是了!
sync:資料同步寫入到內存與硬盤當中;
async:資料會先暫存于內存當中,而非直接寫入硬盤!
例:vi /etc/exports
/tmp *(rw,no_root_squash)
/home/public 192.168.0.*(rw) *(ro)
/home/test 192.168.0.100(rw)
/home/linux *.linux.org(rw,all_squash,anonuid=40,anongid=40)
啟動服務:
#/etc/rc.d/init.d/portmap start
#/etc/rc.d/init.d/nfs start
exportfs [-aruv]
參數說明:
-a :全部掛載(或卸載) /etc/exports 檔案內的設定
-r :重新掛載 /etc/exports 里面的設定,此外,亦同步更新 /etc/exports
及 /var/lib/nfs/xtab 的內容!
-u :卸載某一目錄
-v :在 export 的時候,將分享的目錄顯示到屏幕上!
showmount [-ae] hostname
-a :在屏幕上顯示目前主機與 Client 所連上來的使用目錄狀態
-e :顯示 hostname 這部機器的 /etc/exports 里面的分享目錄!
客戶端:
mount -t nfs hostname(IP):/directory /mount/point 例:
mount -t nfs 192.168.0.1:/share/home /mnt/home
注意:1、權限問題 2、啟動portmap 3、防火墻的配置
iptables -A INPUT -i eth0 -p TCP -s 192.168.0.0/24 --dport 111 -j ACCEPT