国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
鳥哥的 Linux 私房菜 -- NFS 伺服器
NFS為 Network FileSystem 的簡稱,最早之前是由 Sun 這家公司所發(fā)展出來的,他的目的就是想讓不同的機(jī)器、 不同的作業(yè)系統(tǒng)可以彼此分享個別的檔案啦!目前在 Unix Like 當(dāng)中用來做為 file server 是相當(dāng)不錯的一個方案喔!基本上, Unix Like 主機(jī)連接到另一部 Unix Like 主機(jī)來分享彼此的檔案時,使用 NFS 要比 SAMBA 這個伺服器快速且方便的多了!此外, NFS 的設(shè)定真的很簡單,幾乎只要記得啟動 Remote Procedure Call 這個咚咚 (RPC, 就是 portmap 這個套件啦!) 就一定可以架設(shè)的起來!真是不錯??!不過,如果要達(dá)成 Windows 與 Linux 之間的溝通,那麼還是以 SAMBA 比較容易啊!無論如何, NFS 還是可以做為小公司或?qū)W校單位內(nèi)部 Unix Like 機(jī)器共享 file 的一個 Server 喔!


NFS 這個藉由網(wǎng)路分享檔案系統(tǒng)的服務(wù)在架設(shè)的時候是很簡單的,不過,他最大的問題在於『權(quán)限』方面的概念!因為在用戶端與伺服器端可能必須要具備相同的帳號才能夠存取某些目錄或檔案。另外,NFS 的啟動需要透過所謂的遠(yuǎn)端程序呼叫 (RPC),也就是說,我們並不是只要啟動 NFS 就好了,還需要啟動 RPC 這個服務(wù)才行啊!因此,你必須要擁有的基礎(chǔ)知識有:

在開始進(jìn)行 NFS 的設(shè)定之前,我們得先來瞭解一下,什麼是 NFS 呢?不然講了一堆也沒有用,對吧! ^_^!底下就來談一談什麼是 NFS ,且 NFS 的啟動還需要什麼樣的協(xié)定?。?br>

什麼是NFS (Network FileSystem)
NFS 就是 Network FileSystem 的縮寫,最早之前是由Sun 這家公司所發(fā)展出來的。他最大的功能就是可以透過網(wǎng)路,讓不同的機(jī)器、不同的作業(yè)系統(tǒng)、可以彼此分享個別的檔案(share files)。所以,您也可以簡單的將他看做是一個檔案伺服器 (file server) 呢!這個 NFS伺服器可以讓您的 PC 來將網(wǎng)路遠(yuǎn)端的 NFS 主機(jī)分享的目錄,掛載到本地端的機(jī)器當(dāng)中,在本地端的機(jī)器看起來,那個遠(yuǎn)端主機(jī)的目錄就好像是自己的一個磁碟分割槽一樣(partition)!使用上面相當(dāng)?shù)谋憷?/span>


圖一、NFS 主機(jī)分享目錄與 Client 掛載示意圖

就如同上面的圖示一般,當(dāng)我們的 NFS Server 設(shè)定好了分享出來的 /home/sharefile 這個目錄後,其他的NFS Client 端就可以將這個目錄掛載到自己系統(tǒng)上面的某個掛載點 (掛載點可以自訂),例如前面圖示中的NFS client 1 與 NFS client 2 掛載的目錄就不相同。我只要在 NFS client 1 系統(tǒng)中進(jìn)入/home/data/sharefile 內(nèi),就可以看到 NFS Server 系統(tǒng)內(nèi)的 /home/sharefile 目錄下的所有資料了(當(dāng)然,權(quán)限要足夠??!^_^)!這個 /home/data/sharefile 就好像 NFS client 1 自己機(jī)器裡面的一個partition 喔!只要權(quán)限對了,那麼您可以使用 cp, cd, mv, rm...等等磁碟或檔案相關(guān)的指令!真是他X的方便吶!

好的,既然 NFS 是透過網(wǎng)路來進(jìn)行資料的傳輸,那麼經(jīng)由socket pair 的概念你會知道NFS 應(yīng)該會使用一些 port 吧?那麼 NFS 使用哪個 port來進(jìn)行傳輸呢?答案是....不知道! @_@ !因為 NFS 用來傳輸?shù)?port 是隨機(jī)選擇小於 1024 以下的埠口來使用的。咦!那用戶端怎麼知道你伺服器端使用那個 port ?。看藭r就得要遠(yuǎn)端程序呼叫(Remote Procedure Call, RPC) 的協(xié)定來輔助啦!底下我們就來談?wù)勈颤N是 RPC?


什麼是RPC (Remote Procedure Call)
因為 NFS 支援的功能相當(dāng)?shù)亩?,而不同的功能都會使用不同的程式來啟動,每啟動一個功能就會啟用一些 port 來傳輸資料,因此, NFS 的功能所對應(yīng)的 port 才沒有固定住,而是採用隨機(jī)取用一些未被使用的小於 1024 的埠口來作為傳輸之用。但如此一來又造成用戶端想要連上伺服器時的困擾,因為用戶端得要知道伺服器端的相關(guān)埠口才能夠連線吧!

此時我們就得需要遠(yuǎn)端程序呼叫 (RPC) 的服務(wù)啦!RPC 最主要的功能就是在指定每個NFS 功能所對應(yīng)的 port number ,並且回報給用戶端,讓用戶端可以連結(jié)到正確的埠口上去。那 RPC 又是如何知道每個 NFS 的埠口呢?這是因為當(dāng)伺服器在啟動NFS 時會隨機(jī)取用數(shù)個埠口,並主動的向 RPC 註冊,因此 RPC 可以知道每個埠口對應(yīng)的 NFS功能,然後 RPC 又是固定使用 port 111 來監(jiān)聽用戶端的需求並回報用戶端正確的埠口,所以當(dāng)然可以讓 NFS 的啟動更為輕鬆愉快了!
Tips:
所以你要注意,要啟動 NFS 之前,RPC 就要先啟動了,否則 NFS 會無法向 RPC 註冊。 另外,RPC 若重新啟動時,原本註冊的資料會不見,因此 RPC 重新啟動後,他管理的所有程式都需要重新啟動以重新向 RPC 註冊。

圖二、NFS 與 RPC 服務(wù)及檔案系統(tǒng)操作的相關(guān)性

如上圖所示,當(dāng)用戶端有 NFS 檔案存取需求時,他會如何向伺服器端要求資料呢?
  1. 用戶端會向伺服器端的 RPC (port 111) 發(fā)出 NFS 檔案存取功能的詢問要求;
  2. 伺服器端找到對應(yīng)的已註冊的 NFS daemon 埠口後,會回報給用戶端;
  3. 用戶端瞭解正確的埠口後,就可以直接與 NFS daemon 來連線。
由於 NFS 的各項功能都必須要向 RPC 來註冊,如此一來 RPC 才能瞭解 NFS 這個服務(wù)的各項功能之 port number, PID, NFS 在主機(jī)所監(jiān)聽的 IP 等等,而用戶端才能夠透過 RPC 的詢問找到正確對應(yīng)的埠口。 也就是說,NFS 必須要有 RPC 存在時才能成功的提供服務(wù), 因此我們稱 NFS 為 RPC server 的一種。事實上,有很多這樣的伺服器都是向 RPC 註冊的, 舉例來說,NIS (Network Information Service) 也是 RPC server 的一種呢。 此外,由圖二你也會知道,不論是用戶端還是伺服器端,要使用 NFS 時,兩者都需要啟動 RPC 才行喔!

更多的 NFS 相關(guān)協(xié)定資訊你可以參考底下網(wǎng)頁:

NFS 啟動的 RPC daemons
我們現(xiàn)在知道 NFS 伺服器在啟動的時候就得要向 RPC 註冊,所以 NFS 伺服器也被稱為 RPC server 之一。 那麼 NFS 伺服器主要的任務(wù)是進(jìn)行檔案系統(tǒng)的分享,檔案系統(tǒng)的分享則與權(quán)限有關(guān)。 所以 NFS 伺服器啟動時至少需要兩個 daemons ,一個管理 client 端是否能夠登入的問題, 一個管理 client 端能夠取得的權(quán)限。如果你還想要管理 quota 的話,那麼 NFS 還得要再載入其他的 RPC 程式就是了。我們以較單純的 NFS 主機(jī)來說:
  • rpc.nfsd
    這個 daemon 主要的功能就是在管理 Client 是否能夠登入主機(jī)的權(quán)限啦,其中還包含這個登入者的 ID 的判別喔!

  • rpc.mountd
    這個 daemon 主要的功能,則是在管理 NFS 的檔案系統(tǒng)哩!當(dāng) Client 端順利的通過 rpc.nfsd 而登入主機(jī)之後,在他可以使用 NFS 伺服器提供的檔案之前,還會經(jīng)過檔案使用權(quán)限 (就是那個 -rwxrwxrwx 與 owner, group 那幾個權(quán)限啦) 的認(rèn)證程序!他會去讀 NFS 的設(shè)定檔 /etc/exports 來比對 Client 的權(quán)限,當(dāng)通過這一關(guān)之後 Client 就可以取得使用 NFS 檔案的權(quán)限啦! (註:這個也是我們用來管理 NFS 分享之目錄的使用權(quán)限與安全設(shè)定的地方哩!)

  • rpc.lockd (非必要)
    這個玩意兒可以用在管理檔案的鎖定 (lock) 用途。為何檔案需要『鎖定』呢? 因為既然分享的 NFS 檔案可以讓用戶端使用,那麼當(dāng)多個用戶端同時嘗試寫入某個檔案時, 就可能對於該檔案造成一些問題啦!這個 rpc.lockd 則可以用來克服這個問題。 但 rpc.lockd 必須要同時在用戶端與伺服器端都開啟才行喔!此外, rpc.lockd 也常與 rpc.statd 同時啟用。

  • rpc.statd (非必要)
    可以用來檢查檔案的一致性,與 rpc.lockd 有關(guān)!若發(fā)生因為用戶端同時使用同一檔案造成檔案可能有所損毀時, rpc.statd 可以用來檢測並嘗試回復(fù)該檔案。與 rpc.lockd 同樣的,這個功能必須要在伺服器端與用戶端都啟動才會生效。

NFS 的檔案存取權(quán)限
不知道你有沒有想過這個問題,在圖一的環(huán)境下,假如我在 NFS client 1 上面以 dmtsai 這個使用者身份想要去存取 /home/data/sharefile/ 這個來自 NFS server 所提供的檔案系統(tǒng)時, 請問 NFS server 所提供的檔案系統(tǒng)會讓我以什麼身份去存???是 dmtsai 還是?

為什麼會這麼問呢?這是因為 NFS 本身的服務(wù)並沒有進(jìn)行身份登入的識別, 所以說,當(dāng)你在用戶端以 dmtsai 的身份想要存取伺服器端的檔案系統(tǒng)時, 伺服器端會以用戶端的使用者 UID 與 GID 等身份來嘗試讀取伺服器端的檔案系統(tǒng)。這時有個有趣的問題就產(chǎn)生啦! 那就是如果用戶端與伺服器端的使用者身份並不一致怎麼辦?

我們以底下這個圖示來說明一下好了:


圖三、NFS 的伺服器端與用戶端的使用者身份確認(rèn)機(jī)制

當(dāng)我以 dmtsai 這個一般身份使用者要去存取來自伺服器端的檔案時,你要先注意到的是: 檔案系統(tǒng)的 inode 所記錄的屬性為 UID, GID 而非帳號與群組名。 那一般 Linux 主機(jī)會主動的以自己的 /etc/passwd, /etc/group 來查詢對應(yīng)的使用者、群組名稱。 所以當(dāng) dmtsai 進(jìn)入到該目錄後,會參照 NFS client 1 的使用者與群組名稱。 但是由於該目錄的檔案主要來自 NFS server ,所以可能就會發(fā)現(xiàn)幾個情況:
  • NFS server/NFS client 剛好有相同的帳號與群組
    則此時使用者可以直接以 dmtsai 的身份進(jìn)行伺服器所提供的檔案系統(tǒng)之存取。

  • NFS server 的 501 這個 UID 帳號對應(yīng)為 vbird
    若 NFS 伺服器上的 /etc/passwd 裡面 UID 501 的使用者名稱為 vbird 時, 則用戶端的 dmtsai 可以存取伺服器端的 vbird 這個使用者的檔案喔!只因為兩者具有相同的 UID 而已。這就造成很大的問題了!因為沒有人可以保證用戶端的 UID 所對應(yīng)的帳號會與伺服器端相同, 那伺服器所提供的資料不就可能會被錯誤的使用者亂改?

  • NFS server 並沒有 501 這個 UID
    另一個極端的情況是,在伺服器端並沒有 501 這個 UID 的存在,則此時 dmtsai 的身份在該目錄下會被壓縮成匿名者, 一般 NFS 的匿名者會以 UID 為 65534 為其使用者,早期的 Linux distributions 這個 65534 的帳號名稱通常是 nobody ,我們的 CentOS 則取名為 nfsnobody 。

  • 如果使用者身份是 root 時
    有個比較特殊的使用者,那就是每個 Linux 主機(jī)都有的 UID 為 0 的 root 。 想一想,如果用戶端可以用 root 的身份去存取伺服器端的檔案系統(tǒng)時,那伺服器端的資料哪有什麼保護(hù)性? 所以在預(yù)設(shè)的情況下, root 的身份會被主動的壓縮成為匿名者
總之,用戶端使用者能做的事情是與 UID 及其 GID 有關(guān)的,那當(dāng)用戶端與伺服器端的 UID 及帳號的對應(yīng)不一致時, 可能就會造成檔案系統(tǒng)使用上的困擾,這個就是 NFS 檔案系統(tǒng)在使用上面的一個很重要的地方! 而在瞭解使用者帳號與 UID 及檔案系統(tǒng)的關(guān)係之後,要實際在用戶端以 NFS 取用伺服器端的檔案系統(tǒng)時, 你還得需要具有:
  • NFS 伺服器有開放可寫入的權(quán)限 (與 /etc/exports 設(shè)定有關(guān));
  • 實際的檔案權(quán)限具有可寫入 (w) 的權(quán)限。
當(dāng)你滿足了 (1)使用者帳號,亦即 UID 的相關(guān)身份; (2)NFS 伺服器允許有寫入的權(quán)限; (3)檔案系統(tǒng)確實具有 w 的權(quán)限時,你才具有該檔案的可寫入權(quán)限喔! 尤其是身份 (UID) 確認(rèn)的環(huán)節(jié)部分,最容易搞錯啦!也因為如此, 所以 NFS 通常需要與 NIS 這一個可以確認(rèn)用戶端與伺服器端身份一致的服務(wù)搭配使用,以避免身份的錯亂?。?^_^

NFS Server 端的設(shè)定
既然要使用 NFS 的話,就得要安裝 NFS 所需要的套件了!底下讓我們查詢一下系統(tǒng)有無安裝所需要的套件, NFS 套件的架構(gòu)以及如何設(shè)定 NFS 主機(jī)吧! ^_^


所需要的套件
以 CentOS 4.x 為例的話,要設(shè)定好 NFS 伺服器我們必須要有兩個套件才行,分別是:
  • NFS 主程式:nfs-utils
  • RPC 主程式:portmap
  • portmap
    就如同剛剛提的到,我們的 NFS 其實可以被視為一個 RPC 程式,而要啟動任何一個 RPC 程式之前,我們都需要做好 port 的對應(yīng) (mapping) 的工作才行,這個工作其實就是『 portmap 』這個服務(wù)所負(fù)責(zé)的!也就是說, 在啟動任何一個 RPC server 之前,我們都需要啟動 portmap 才行!

  • nfs-utils
    就是提供 rpc.nfsd 及 rpc.mountd 這兩個 NFS daemons 與其他相關(guān) documents 與說明文件、執(zhí)行檔等的套件!這個就是 NFS 的主要套件啦!一定要有喔!

    好了,知道我們需要這兩個套件之後,現(xiàn)在幹嘛?趕快去您的系統(tǒng)先用 RPM 看一下有沒有這兩個套件啦! 沒有的話趕快用 RPM 或 yum 去安裝喔!不然就玩不下去了!

    例題:
    請問我的主機(jī)是以 RPM 為套件管理的 Linux distribution ,例如 Red Hat, CentOS 與 SuSE 等版本,那麼我要如何知道我的主機(jī)裡面是否已經(jīng)安裝了 portmap 與 nfs 相關(guān)的套件呢?
    答:
      簡單的使用 rpm -qa | grep nfs 與 rpm -qa | grep portmap 即可知道啦!如果沒有安裝的話, 在 CentOS 內(nèi)可以使用『 yum install nfs-utils 』來安裝!


  • NFS 的套件結(jié)構(gòu)
    NFS 這個咚咚真的是很簡單,上面我們提到的 NFS 套件中,設(shè)定檔只有一個,執(zhí)行檔也不多, 記錄檔也三三兩兩而已吶!趕緊先來看一看吧! ^_^
    • /etc/exports
      這個檔案就是 NFS 的主要設(shè)定檔了!不過,系統(tǒng)並沒有預(yù)設(shè)值,所以這個檔案『 不一定會存在』,您可能必須要使用 vi 主動的建立起這個檔案喔!我們等一下要談的設(shè)定也僅只是這個檔案而已吶!

    • /usr/sbin/exportfs
      這個是維護(hù) NFS 分享資源的指令,我們可以利用這個指令重新分享 /etc/exports 變更的目錄資源、將 NFS Server 分享的目錄卸載或重新分享等等,這個指令是 NFS 系統(tǒng)裡面相當(dāng)重要的一個喔!至於指令的用法我們在底下會再介紹。

    • /usr/sbin/showmount
      這是另一個重要的 NFS 指令。exportfs 是用在 NFS Server 端,而 showmount 則主要用在 Client 端。這個 showmount 可以用來察看 NFS 分享出來的目錄資源喔!

    • /var/lib/nfs/*tab
      在 NFS 伺服器的登錄檔都放置到 /var/lib/nfs/ 目錄裡面,在該目錄下有兩個比較重要的登錄檔, 一個是 etab ,主要記錄了 NFS 所分享出來的目錄的完整權(quán)限設(shè)定值;另一個 xtab 則記錄曾經(jīng)連結(jié)到此 NFS 主機(jī)的相關(guān)用戶端資料。
    就說不難吧!主要就是這幾個囉!


    /etc/exports 設(shè)定檔的語法與參數(shù)
    在開始 NFS 伺服器的設(shè)定之前,您必須要瞭解的是,NFS 會直接使用到核心功能,所以你的核心必須要有支援 NFS 才行。 萬一如果你的核心版本小於 2.2 版,或者重新自行編譯過核心的話,那麼就得要很注意啦! 因為你可能會忘記選擇 NFS 的核心支援?。?br>
    還好,我們 CentOS 或者是其他版本的 Linux ,預(yù)設(shè)核心通常是支援 NFS 功能的, 所以你只要確認(rèn)你的核心版本是目前新的 2.6.x 版,並且使用你的 distribution 所提供的核心, 那應(yīng)該就不會有問題啦!

    至於 NFS 伺服器的架設(shè)實在很簡單,你只要編輯好主要設(shè)定檔 /etc/exports 之後, 先啟動 portmap ,然後再啟動 nfs ,你的 NFS 就成功了! 不過這樣的設(shè)定能否對用戶端生效?那就得要考慮你權(quán)限方面的設(shè)定能力了。 廢話少說,我們就直接來看看那個 /etc/exports 應(yīng)該如何設(shè)定吧! 某些 distributions 並不會主動提供 /etc/exports 檔案,所以請您自行手動建立他吧。
    [root@linux ~]# vi /etc/exports                        /tmp         192.168.1.0/24(ro)   localhost(rw)   *.ev.ncku.edu.tw(ro,sync)                        # [分享目錄] [第一部主機(jī)(權(quán)限)]   [可用主機(jī)名]    [可用萬用字元]                        
    您看看,這個設(shè)定檔有夠簡單吧!每一行最前面是要分享出來的目錄,注意喔!是以目錄為單位??! 然後這個目錄可以依照不同的權(quán)限分享給不同的主機(jī),像鳥哥上面的例子說明是: 要將 /tmp 分別分享給三個不同的主機(jī)或網(wǎng)域的意思。記得主機(jī)後面以小括號 () 設(shè)計權(quán)限參數(shù), 若權(quán)限參數(shù)不止一個時,則以逗號 (,) 分開。且主機(jī)名與小括號是連在一起的喔! 在這個檔案內(nèi)也可以利用 # 來註解呢。

    至於主機(jī)名稱的設(shè)定主要有幾個方式:
    • 可以使用完整的 IP 或者是網(wǎng)域,例如 192.168.1.10 或 192.168.1.0/24 ,或 192.168.1.0/255.255.255.0 都可以接受!

    • 可以使用主機(jī)名稱,這個主機(jī)名稱要在 /etc/hosts 內(nèi)或使用 DNS 可以被找到才行?。≈攸c是可找到 IP 就是了。如果是主機(jī)名稱的話,那麼他可以支援萬用字元,例如 * 或 ? 均可接受。
    至於權(quán)限方面 (就是小括號內(nèi)的參數(shù)) 常見的參數(shù)則有:
    • rw:read-write,可讀寫的權(quán)限;

    • ro:read-only,唯讀的權(quán)限;

    • sync:資料同步寫入到記憶體與硬碟當(dāng)中;

    • async:資料會先暫存於記憶體當(dāng)中,而非直接寫入硬碟!

    • no_root_squash
      登入 NFS 主機(jī)使用分享目錄的使用者,如果是 root 的話,那麼對於這個分享的目錄來說,他就具有 root 的權(quán)限! 這個項目『極不安全』,不建議使用!

    • root_squash
      在登入 NFS 主機(jī)使用分享之目錄的使用者如果是 root 時,那麼這個使用者的權(quán)限將被壓縮成為匿名使用者,通常他的 UID 與 GID 都會變成 nobody(nfsnobody) 那個系統(tǒng)帳號的身份;

    • all_squash
      不論登入 NFS 的使用者身份為何, 他的身份都會被壓縮成為匿名使用者,通常也就是 nobody(nfsnobody) 啦!

    • anonuid
      anon 意指 anonymous (匿名者) 前面關(guān)於 *_squash 提到的匿名使用者的 UID 設(shè)定值,通常為 nobody(nfsnobody),但是您可以自行設(shè)定這個 UID 的值!當(dāng)然,這個 UID 必需要存在於您的 /etc/passwd 當(dāng)中!

    • anongid:同 anonuid ,但是變成 group ID 就是了!
    這是幾個比較常見的權(quán)限參數(shù),如果你有興趣玩其他的參數(shù)時,請自行 man exports 可以發(fā)現(xiàn)很多有趣的資料。 接下來我們利用上述的幾個參數(shù)來實際思考一下幾個有趣的小習(xí)題:

  • 思考一:讓 root 保有 root 的權(quán)限
    我想將 /tmp 分享出去給大家使用,由於這個目錄本來就是大家都可以讀寫的,因此想讓所有的人都可以存取。 此外,我要讓 root 寫入的檔案還是具有 root 的權(quán)限,那如何設(shè)計設(shè)定檔?
    [root@linux ~]# vi /etc/exports                            # 任何人都可以用我的 /tmp ,用萬用字元來處理主機(jī)名稱,重點在 no_root_squash                            /tmp  *(rw,no_root_squash)                            
    參考前面的主機(jī)名稱設(shè)定說明,我們可以利用萬用字元的。這表示無論來自哪裡都可以使用我的 /tmp 這個目錄。 再次提醒,『 *(rw,no_root_squash) 』這一串設(shè)定值中間是沒有空白字元的喔!而 /tmp 與 *(rw,no_root_squash) 則是有空白字元來隔開的!特別注意到那個 no_root_squash 的功能!在這個例子中,如果你是用戶端,而且您是以 root 的身份登入您的 Linux 主機(jī),那麼當(dāng)您 mount 上我這部主機(jī)的 /tmp 之後,您在該 mount 的目錄當(dāng)中,將具有『root 的權(quán)限!』

  • 思考二:同一目錄針對不同範(fàn)圍開放不同權(quán)限
    我要將一個公共的目錄 /home/public 公開出去,但是只有限定我的區(qū)域網(wǎng)路內(nèi) 192.168.0.0/24 這個網(wǎng)域可以讀寫,其他人則只能讀?。?br>
    [root@linux ~]# vi /etc/exports                            /tmp          *(rw,no_root_squash)                            /home/public  192.168.0.0/24(rw)    *(ro)                            # 繼續(xù)累加在後面,注意,我有將主機(jī)與網(wǎng)域分為兩段 (用空白隔開) 喔!                            
    上面的例子說的是,當(dāng)我的 IP 是在 192.168.0.0/24 這個網(wǎng)段的時候,那麼當(dāng)我在 Client 端掛載了 Server 端的 /home/public 後,針對這個被我掛載的目錄我就具有可以讀寫的權(quán)限~ 至於如果我不是在這個網(wǎng)段之內(nèi),那麼這個目錄的資料我就僅能讀取而已,亦即為唯讀的屬性啦!

    需要注意的是,之前鳥哥將主機(jī)名稱的萬用字元與 IP 網(wǎng)段搞錯了! 萬用字元僅能用在主機(jī)名稱的分辨上面,IP 或網(wǎng)段就只能用 192.168.0.0/24 的狀況, 不可以使用 192.168.0.* 喔!

  • 思考三:僅給某個單一主機(jī)使用的目錄設(shè)定
    我要將一個私人的目錄 /home/test 開放給 192.168.0.100 這個 Client 端的機(jī)器來使用,那麼我就必需這麼寫:
    [root@linux ~]# vi /etc/exports                            /tmp          *(rw,no_root_squash)                            /home/public  192.168.0.0/24(rw)    *(ro)                            /home/test    192.168.0.100(rw)                            # 只要設(shè)定 IP 正確即可!                            
    這樣就設(shè)定完成了!而且,只有 192.168.0.100 這部機(jī)器才能對 /home/test 這個目錄進(jìn)行存取喔!

  • 思考四:開放匿名登入的情況
    我要讓 *.linux.org 網(wǎng)域的主機(jī),登入我的 NFS 主機(jī)時,可以存取 /home/linux ,但是他們存資料的時候,我希望他們的 UID 與 GID 都變成 40 這個身份的使用者, 假設(shè)我 NFS 伺服器上的 UID 40 已經(jīng)有設(shè)定妥當(dāng):
    [root@linux ~]# vi /etc/exports                            /tmp          *(rw,no_root_squash)                            /home/public  192.168.0.0/24(rw)    *(ro)                            /home/test    192.168.0.100(rw)                            /home/linux   *.linux.org(rw,all_squash,anonuid=40,anongid=40)                            # 如果要開放匿名,那麼重點是 all_squash,並且要配合 anonuid 喔!                            
    特別注意到那個 all_squash 與 anonuid, anongid 的功能!如此一來,當(dāng) test.linux.org 登入這部 NFS 主機(jī),並且在 /home/linux 寫入檔案時,該檔案的所有人與所有群組,就會變成 /etc/passwd 裡面對應(yīng)的 UID 為 40 的那個身份的使用者了!

    上面四個案例的權(quán)限如果依照前一小節(jié)的存取設(shè)定權(quán)限來思考的話, 那麼權(quán)限會是什麼情況呢?讓我們來檢查一下:

  • 用戶端與主機(jī)端具有相同的 UID 與帳號:
    假設(shè)我在 192.168.0.100 登入這部 NFS (IP 假設(shè)為 192.168.0.2) 主機(jī),並且我在 192.168.0.100 的帳號為 dmtsai 這個身份,同時,在這部 NFS 上面也有 dmtsai 這個帳號, 並具有相同的 UID ,果真如此的話,那麼:
    1. 由於 192.168.0.2 這部 NFS 主機(jī)的 /tmp 權(quán)限為 -rwxrwxrwt ,所以我 (dmtsai 在 192.168.0.100 上面) 在 /tmp 底下具有存取的權(quán)限,並且寫入的檔案所有人為 dmtsai ;
    2. 在 /home/public 當(dāng)中,由於我有讀寫的權(quán)限,所以如果在 /home/public 這個目錄的權(quán)限對於 dmtsai 有開放寫入的話,那麼我就可以讀寫,並且我寫入的檔案所有人是 dmtsai 。但是萬一 /home/public 對於 dmtsai 這個使用者並沒有開放可以寫入的權(quán)限時, 那麼我還是沒有辦法寫入檔案喔!這點請?zhí)貏e留意!
    3. 在 /home/test 當(dāng)中,我的權(quán)限與 /home/public 相同的狀態(tài)!還需要 NFS 主機(jī)的 /home/test 對於 dmtsai 有開放權(quán)限;
    4. 在 /home/linux 當(dāng)中就比較麻煩!因為不論您是何種 user ,您的身份一定會被變成 UID=40 這個帳號!所以,這個目錄就必需要針對 UID = 40 的那個帳號名稱,修改他的權(quán)限才行!
  • 用戶端與主機(jī)端的帳號並未相同時:
    假如我在 192.168.0.100 的身份為 vbird ,但是 192.168.0.2 這部 NFS 主機(jī)卻沒有 vbird 這個帳號時,情況會變成怎樣呢?
    1. 我在 /tmp 底下還是可以寫入,但是寫入的檔案所有人變成 nobody 了;
    2. 我在 /home/public 裡面是否可以寫入,還需要視 /home/public 的權(quán)限而定,不過,反正我的身份就被變成 nobody 了就是;
    3. /home/test 的觀點與 /home/public 相同!
    4. /home/linux 底下,我的身份就被變成 UID = 40 那個使用者就是了!
  • 當(dāng)用戶端的身份為 root 時:
    假如我在 192.168.0.100 的身份為 root 呢? root 這個帳號每個系統(tǒng)都會有呀!權(quán)限變成怎樣呢?
    1. 我在 /tmp 裡面可以寫入,並且由於 no_root_squash 的參數(shù),改變了預(yù)設(shè)的 root_squash 設(shè)定值,所以在 /tmp 寫入的檔案所有人為 root 喔!
    2. 我在 /home/public 底下的身份還是被壓縮成為 nobody 了!因為預(yù)設(shè)屬性裡面都具有 root_squash 呢!所以,如果 /home/public 有針對 nobody 開放寫入權(quán)限時,那麼我就可以寫入,但是檔案所有人變成 nobody 就是了!
    3. /home/test 與 /home/public 相同;
    4. /home/linux 的情況中,我 root 的身份也被壓縮成為 UID = 40 的那個使用者了!
    這樣的權(quán)限講解之後,您可以瞭解了嗎?這裡是最重要的地方,如果這一關(guān)通過了,底下的咚咚就沒有問題啦! ^_^! 當(dāng)然啦,您還是得要回到前一小節(jié)NFS 的檔案存取權(quán)限好好的瞧一瞧, 才能解決 NFS 的問題喔!

  • 啟動 NFS
    設(shè)定檔搞定後,當(dāng)然要開始來啟動才行??!而前面我們也提到過,NFS 的啟動還需要 portmap 的協(xié)助才行??! 所以趕緊來啟動吧!
    [root@linux ~]# /etc/init.d/portmap start                            # 如果 portmap 本來就已經(jīng)在執(zhí)行了,那就不需要啟動??!                            [root@linux ~]# /etc/init.d/nfs start                            # 有時候可能會出現(xiàn)如下的警告訊息:                            exportfs: /etc/exports [3]: No 'sync' or 'async' option specified                            for export "192.168.0.100:/home/test".                            Assuming default behaviour ('sync').                            # 上面的警告訊息僅是在告知因為我們沒有指定 sync 或 async 的參數(shù),                            # 則 NFS 將預(yù)設(shè)會使用 sync 的資訊而已。妳可以不理他,也可以加入 /etc/exports。                            [root@linux ~]# vi /etc/exports                            /tmp          *(rw,no_root_squash,sync)                            /home/public  192.168.0.0/24(rw,sync)    *(ro,sync)                            /home/test    192.168.0.100(rw,sync)                            /home/linux   *.linux.org(rw,all_squash,anonuid=40,anongid=40,sync)                            [root@linux ~]# /etc/init.d/nfs restart                            
    那個 portmap 根本就不需要設(shè)定!只要直接啟動他就可以啦!啟動之後,會出現(xiàn)一個 port 111 的 sunrpc 的服務(wù),那就是 portmap 啦!至於 nfs 則會啟動至少兩個以上的 daemon 出現(xiàn)!然後就開始在監(jiān)聽 Client 端的需求啦!你必須要很注意螢?zāi)簧厦娴妮敵鲑Y訊, 因為如果設(shè)定檔寫錯的話,螢?zāi)簧蠒@示出錯誤的地方喔!

    此外,如果妳想要增加一些 NFS 伺服器的資料一致性功能時,可能需要用到 rpc.lockd 及 rpc.statd 等 RPC 服務(wù), 那麼或許妳可以增加一個服務(wù),那就是 nfslock
    [root@linux ~]# /etc/init.d/nfslock start                            
    啟動之後,請趕快到 /var/log/messages 裡面看看有沒有被正確的啟動呢?
    [root@linux ~]# vi /var/log/messages                            Sep 22 00:01:37 linux nfs: Starting NFS services:  succeeded                            Sep 22 00:01:37 linux nfs: rpc.rquotad startup succeeded                            Sep 22 00:01:37 linux nfsd[1050]: nfssvc_versbits: +2 +3 +4                            Sep 22 00:01:37 linux nfs: rpc.nfsd startup succeeded                            Sep 22 00:01:37 linux nfs: rpc.mountd startup succeeded                            Sep 22 00:01:37 linux rpcidmapd: rpc.idmapd -SIGHUP succeeded                            
    在確認(rèn)沒有問題之後,接下來我們來瞧一瞧那麼 NFS 到底開了哪些埠口?
    [root@linux ~]# netstat -ultn                            Active Internet connections (only servers)                            Proto Recv-Q Send-Q Local Address  Foreign Address State   PID/Program name                            tcp        0      0 0.0.0.0:2049   0.0.0.0:*       LISTEN  -                            tcp        0      0 0.0.0.0:803    0.0.0.0:*       LISTEN  1047/rpc.rquotad                            tcp        0      0 0.0.0.0:111    0.0.0.0:*       LISTEN  32503/portmap                            tcp        0      0 0.0.0.0:819    0.0.0.0:*       LISTEN  1064/rpc.mountd                            udp        0      0 0.0.0.0:2049   0.0.0.0:*               -                            udp        0      0 0.0.0.0:800    0.0.0.0:*               1047/rpc.rquotad                            udp        0      0 0.0.0.0:816    0.0.0.0:*               1064/rpc.mountd                            udp        0      0 0.0.0.0:111    0.0.0.0:*               32503/portmap                            
    注意看到上面喔!總共產(chǎn)生了好多的 port 喔!真是可怕!不過主要的埠口是:
    • portmap 啟動的 port 在 111;
    • NFS 啟動的 port 在 2049;
    • 其他 rpc.daemons 啟動的 port 則是隨機(jī)產(chǎn)生的,因此需向 port 111 註冊。
    好了,那我怎麼知道每個 RPC 服務(wù)的註冊狀況?沒關(guān)係,妳可以使用 rpcinfo 來處理的。
    [root@linux ~]# rpcinfo [-p] [IP|hostname]                                參數(shù):                                -p :顯示出所有的 port 與 porgram 的資訊;                                範(fàn)例一:顯示出目前這部主機(jī)的 RPC 狀態(tài)                                [root@linux ~]# rpcinfo -p localhost                                program vers proto   port                                100000    2   tcp    111  portmapper                                100000    2   udp    111  portmapper                                100011    1   udp    800  rquotad                                100011    2   udp    800  rquotad                                100011    1   tcp    803  rquotad                                100011    2   tcp    803  rquotad                                100003    2   udp   2049  nfs                                100003    3   udp   2049  nfs                                100003    2   tcp   2049  nfs                                100003    3   tcp   2049  nfs                                100005    1   udp    816  mountd                                100005    1   tcp    819  mountd                                100005    2   udp    816  mountd                                100005    2   tcp    819  mountd                                100005    3   udp    816  mountd                                100005    3   tcp    819  mountd                                #         NFS版本       埠口  服務(wù)名稱                                
    仔細(xì)瞧瞧,上面出現(xiàn)的資訊當(dāng)中除了程式名稱與埠口的對應(yīng)可以與 netstat -tlunp 輸出的結(jié)果作比對之外,還需要注意到 NFS 的版本支援!新的 NFS 版本傳輸速度較快, 由上表看起來,我們的 NFS 至少支援到第 3 版,應(yīng)該還算合理啦! ^_^! 如果妳的 rpcinfo 無法輸出,那就表示註冊的資料有問題啦!可能需要重新啟動 portmap 與 nfs 喔!


    NFS 的連線觀察
    在妳的 NFS 伺服器設(shè)定妥當(dāng)之後,我們可以先自我測試一下是否可以連線喔! 就是利用 showmount 這個指令來查閱!
    [root@linux ~]# showmount [-ae] [hostname|IP]                                參數(shù):                                -a :顯示目前主機(jī)與用戶端的 NFS 連線分享的狀態(tài);                                -e :顯示某部主機(jī)的 /etc/exports 所分享的目錄資料。                                範(fàn)例一:請顯示出剛剛我們所設(shè)定好的相關(guān) exports 資訊                                [root@linux ~]# showmount -e localhost                                Export list for localhost:                                /tmp         *                                /home/linux  *.linux.org                                /home/public (everyone)                                /home/test   192.168.0.100                                
    很簡單吧!所以,當(dāng)您要掃瞄某一部主機(jī)他提供的 NFS 分享的目錄時,就使用 showmount -e IP (或hostname) 即可!非常的方便吧!這也是 NFS client 端最常用的指令喔!

    事實上 NFS 關(guān)於目錄權(quán)限設(shè)定的資料非常之多!我們可以檢查一下 /var/lib/nfs/etab 就知道了!
    [root@linux ~]# tail /var/lib/nfs/etab                                /home/public    *(ro,sync,wdelay,hide,nocrossmnt,secure,root_squash,no_all_squash,                                subtree_check,secure_locks,mapping=identity,anonuid=-2,anongid=-2)                                # 上面是同一行,可以看出除了 ro, sync, root_squash 等等,                                # 其實還有 anonuid 及 anongid 等等的設(shè)定!                                /tmp    *(rw,sync,wdelay,hide,nocrossmnt,secure,no_root_squash,no_all_squash,subtr                                ee_check,secure_locks,mapping=identity,anonuid=-2,anongid=-2)                                # 同樣的,在 /tmp 也有很多的權(quán)限相關(guān)的參數(shù)喔!                                
    上面僅僅是一個小範(fàn)例,只是....怎麼 anonuid 會是 -2 ??? 其實那個數(shù)值是 65536-2 啦!所以得到 65534 ,比對 /etc/passwd , 會發(fā)現(xiàn) CentOS 出現(xiàn)的是 nfsnobody 啦!這個帳號在不同的版本都可能會不一樣的! 另外,如果有其他用戶端掛載了妳的 NFS 檔案系統(tǒng)時, 那麼該用戶端與檔案系統(tǒng)資訊就會被記錄到 /var/lib/nfs/xtab 裡頭去的!

    另外,如果妳想要重新處理 /etc/exports 檔案,當(dāng)重新設(shè)定完 /etc/exports 後需不需要重新啟動 nfs ? 不需要啦!如果重新啟動 nfs 的話,要得要向 RPC 註冊!很麻煩~ 這個時候我們可以透過 exportfs 這個指令來幫忙喔!
    [root@linux ~]# exportfs [-aruv]                                參數(shù):                                -a :全部掛載(或卸載) /etc/exports 檔案內(nèi)的設(shè)定                                -r :重新掛載 /etc/exports 裡面的設(shè)定,此外,亦同步更新 /etc/exports                                及 /var/lib/nfs/xtab 的內(nèi)容!                                -u :卸載某一目錄                                -v :在 export 的時候,將分享的目錄顯示到螢?zāi)簧希?/span>                                範(fàn)例一:重新掛載一次 /etc/exports 的設(shè)定                                [root@linux ~]# exportfs -arv                                exporting 192.168.0.100:/home/test                                exporting 192.168.0.0/24:/home/public                                exporting *.linux.org:/home/linux                                exporting *:/home/public                                exporting *:/tmp                                範(fàn)例二:全部都卸載                                [root@linux ~]# exportfs -auv                                
    要熟悉一下這個指令的用法喔!這樣一來,就可以直接重新 exportfs 我們的記錄在 /etc/exports 的目錄資料囉!


    NFS 的安全性
    在 NFS 的安全性上面,有些地方是你必須要知道的喔!底下我們分別來談一談:

  • 利用 iptables 做大範(fàn)圍連線的限制:
    假設(shè)我們的 NFS 主要是針對內(nèi)部網(wǎng)路開放而已,而對於外部網(wǎng)路只有對成大的學(xué)術(shù)網(wǎng)路開放,亦即是 140.116.0.0/16 ,那麼妳可以在鳥哥於防火牆與 NAT 那個章節(jié)提供的 iptables.allow 內(nèi)增加如下的語法:
    [root@linux ~]# vi /usr/local/virus/iptables/iptables.allow                                iptables -A INPUT -i $EXTIF -p TCP -s 192.168.0.0/24 --dport 111 -j ACCEPT                                iptables -A INPUT -i $EXTIF -p UDP -s 192.168.0.0/24 --dport 111 -j ACCEPT                                iptables -A INPUT -i $EXTIF -p TCP -s 140.116.0.0/16 --dport 111 -j ACCEPT                                iptables -A INPUT -i $EXTIF -p UDP -s 140.116.0.0/16 --dport 111 -j ACCEPT                                
    這樣大致上就可以讓 192.168.0.0/24 這個 C Class 的網(wǎng)域與 140.116.0.0/16 這個 B Class 的網(wǎng)域到您的主機(jī)裡面來,而其他的連線就視您的原本的 iptables 的狀態(tài)而定喔!

    那為什麼是限制 port 111 而不是每個 RPC server 所開啟的埠口呢? 因為 RPC server 所開啟的埠口都是隨機(jī)產(chǎn)生的,要對他開放實在是... 而且用戶端想要連上 NFS 伺服器之前,都是透過 port 111 來向 NFS 伺服器詢問連線的埠口的, 所以當(dāng)然先就 port 111 來進(jìn)行限制囉!^_^

  • 利用 TCP Wrappers 限制
    但是不同的 RPC 畢竟提供的服務(wù)不一樣,如果妳想要針對某些服務(wù)來抵擋的話, 那可以透過 TCP Wrappers 這個根據(jù) program name 來抵擋網(wǎng)路封包的咚咚囉! 還記得我們剛剛使用過 rpcinfo 這個指令吧? 不是會輸出很多的 RPC program name 嗎?沒錯!妳可以這樣做:
    [root@linux ~]# vi /etc/hosts.allow                                # 讓來自 140.116.44.0/255.255.255.0 的主機(jī)可以使用 mountd                                mountd: 140.116.44.0/255.255.255.0                                [root@linux ~]# vi /etc/hosts.deny                                # 讓所有人都不能使用 mountd                                mountd: ALL                                
    為什麼使用的是 mountd 呢?去到前一小節(jié)的 rpcinfo 指令處瞧一瞧, 妳就會知道為何需要使用到 mountd 囉!^_^

  • 使用 /etc/exports 設(shè)定更安全的權(quán)限
    這就牽涉到您的邏輯思考了!怎麼設(shè)定都沒有關(guān)係,但是在『便利』與『安全』之間,要找到您的平衡點吶!善用 root_squash 及 all_squash 等功能,再利用 anonuid 等等的設(shè)定來規(guī)範(fàn)登入您主機(jī)的使用者身份!應(yīng)該還是有辦法提供一個較為安全的 NFS 主機(jī)的!

    另外,當(dāng)然啦,妳的 NFS 伺服器的檔案系統(tǒng)之權(quán)限設(shè)定也需要很留意! 不要隨便設(shè)定成為 -rwxrwxrwx ,這樣會造成你的系統(tǒng)『很大的困擾』的啊!

  • 更安全的 partition 規(guī)劃:
    如果您的工作環(huán)境中,具有多部的 Linux 主機(jī),並且預(yù)計彼此分享出目錄時,那麼在安裝 Linux 的時候,最好就可以規(guī)劃出一塊 partition 作為預(yù)留之用。因為『 NFS 可以針對目錄來分享』,因此,您可以將預(yù)留的 partition 掛載在任何一個掛載點,再將該掛載點 (就是目錄啦!)由 /etc/exports 的設(shè)定中分享出去,那麼整個工作環(huán)境中的其他 Linux 主機(jī)就可以使用該 NFS 主機(jī)的那塊預(yù)留的 partition 了!所以,在主機(jī)的規(guī)劃上面,主要需要留意的只有 partition 而已。此外,由於分享的 partition 可能較容易被入侵,最好可以針對該 partition 設(shè)定比較嚴(yán)格的參數(shù)在 /etc/fstab 當(dāng)中喔!

  • NFS 伺服器關(guān)機(jī)前的注意事項:
    需要注意的是,由於 NFS 使用的這個 RPC 在 client 端連上伺服器時,那麼您的伺服器想要關(guān)機(jī), 那可就會成為『不可能的任務(wù)』!如果您的 Server 上面還有 Client 在連線,那麼您要關(guān)機(jī), 可能得要等到數(shù)個鐘頭才能夠正常的關(guān)機(jī)成功!嗄!真的假的!不相信嗎?不然您自個兒試試看!^_^!

    所以囉,建議您的 NFS Server 想要關(guān)機(jī)之前,能先『關(guān)掉 portmap 與 nfs 』這兩個東西! 如果無法正確的將這兩個 daemons 關(guān)掉,那麼先以 netstat -utlp 找出 PID ,然後以 kill 將他關(guān)掉先!這樣才有辦法正常的關(guān)機(jī)成功喔!這個請?zhí)貏e特別的注意呢!

    當(dāng)然啦,妳也可以利用 showmount -a localhost 來查出來那個用戶端還在連線? 或者是查閱 /var/lib/nfs/rmtab 或 xtab 等檔案來檢查亦可。找到這些用戶端後, 可以直接 call 他們??!讓他們能夠幫幫忙先! ^_^

    事實上,用戶端以 NFS 連線到伺服器端時,如果他們可以下達(dá)一些比較不那麼『硬』的掛載參數(shù)時, 就能夠減少這方面的問題喔!相關(guān)的安全性可以參考下一小節(jié)的 用戶端可處理的掛載參數(shù)與開機(jī)掛載。

  • NFS 用戶端的設(shè)定
    既然 NFS 伺服器最主要的工作就是分享檔案系統(tǒng)給網(wǎng)路上其他的用戶端,所以用戶端當(dāng)然得要掛載這個玩意兒囉! 此外,主機(jī)端可以加設(shè)防火牆來保護(hù)自己的檔案系統(tǒng),那麼用戶端掛載該檔案系統(tǒng)後,難道不需要保護(hù)自己? 呵呵!所以底下我們要來談一談幾個 NFS 用戶端的課題。


    遠(yuǎn)端 NFS 伺服器的掛載
    你要如何掛載 NFS 伺服器所提供的檔案系統(tǒng)呢?基本上,可以這樣做:
    1. 確認(rèn)本地端已經(jīng)啟動了 portmap 服務(wù)!
    2. 掃瞄 NFS 伺服器分享的目錄有哪些,並瞭解我們是否可以使用 (showmount);
    3. 在本地端建立預(yù)計要掛載的掛載點目錄 (mkdir);
    4. 利用 mount 將遠(yuǎn)端主機(jī)直接掛載到相關(guān)目錄。
    好,現(xiàn)在假設(shè)用戶端在 192.168.0.100 這部機(jī)器上,而伺服器是 192.168.0.2 , 那麼趕緊來檢查一下我們是否已經(jīng)有 portmap 的啟動,另外遠(yuǎn)端主機(jī)有什麼可用的目錄呢!
    [root@linux ~]# /etc/init.d/portmap start                                    [root@linux ~]# /etc/init.d/nfslock start                                    # 一般來說,系統(tǒng)預(yù)設(shè)會啟動 portmap ,不過鳥哥之前關(guān)閉過,所以要啟動。                                    # 另外,如果伺服器端有啟動 nfslock 的話,用戶端也要啟動才能生效!                                    [root@linux ~]# showmount -e 192.168.0.2                                    Export list for 192.168.0.2:                                    /tmp         *                                    /home/linux  *.linux.org                                    /home/public (everyone)   <==這是等一下我們要掛載的目錄                                    /home/test   192.168.0.100                                    
    接下來我想要將遠(yuǎn)端主機(jī)的 /home/public 掛載到本地端主機(jī)的 /home/nfs/public , 所以我就得要在本地端主機(jī)先建立起這個掛載點目錄才行啊!然後就可以用 mount 這個指令直接掛載 NFS 的檔案系統(tǒng)囉!
    [root@linux ~]# mkdir -p /home/nfs/public                                    [root@linux ~]# mount -t nfs 192.168.0.2:/home/public /home/nfs/public                                    # 注意一下掛載的語法!『 -t nfs 』指定檔案系統(tǒng)類型,                                    # IP:/dir 則是指定某一部主機(jī)的某個提供的目錄!                                    [root@linux ~]# df                                    Filesystem    1K-blocks      Used Available Use% Mounted on                                    ....中間省略....                                    192.168.0.2:/home/public                                    10080512   2135072   7433344  23% /home/nfs/public                                    
    先注意一下掛載 NFS 檔案的格式範(fàn)例喔!呵呵!這樣就可以將資料掛載進(jìn)來啦!請注意喔! 以後,只要您進(jìn)入您的目錄 /home/nfs/public 就等於到了 192.168.0.2 那部遠(yuǎn)端主機(jī)的 /home/public 那個目錄中囉!很不錯吧!至於你在該目錄下有什麼權(quán)限? 那就請您回去前一小節(jié)查一查權(quán)限的思考吧! ^_^ !那麼如何將掛載的 NFS 目錄卸載呢?就使用 umount ??!
    [root@linux ~]# umount /home/nfs/public                                    

    用戶端可處理的掛載參數(shù)與開機(jī)掛載
    瞧!用戶端的掛載工作很簡單吧!不過不曉得你有沒有想過,如果你剛剛掛載到本機(jī) /home/nfs/public 的檔案系統(tǒng)當(dāng)中,含有一支 script ,且這支 script 的內(nèi)容為『 rm -rf / 』且該檔案權(quán)限為 555 , 夭壽~如果你因為好奇給他執(zhí)行下去,可有的你受的了~因為整個系統(tǒng)都會被殺光光!真可憐!

    所以說,除了 NFS 伺服器需要保護(hù)之外,我們?nèi)∮萌思业?NFS 檔案系統(tǒng)也需要自我保護(hù)才行??! 那要如何自我保護(hù)?。靠梢酝高^ mount 的指令參數(shù)喔!包括底下這些主要的參數(shù)可以嘗試加入:

    參數(shù) 參數(shù)代表意義 系統(tǒng)預(yù)設(shè)值
    suid
    nosuid
    曉得啥是 SUID 吧?如果掛載的 partition 上面有任何 SUID 的 binary 程式時, 你只要使用 nosuid 就能夠取消 SUID 的功能了!嗄?不知道什麼是 SUID ?那就不要學(xué)人家架站嘛!@_@! 趕緊回去基礎(chǔ)學(xué)習(xí)篇複習(xí)一下程序與資源管理啦! suid
    rw
    ro
    你可以指定該 partition 是唯讀 (ro) 或可讀寫喔! rw
    dev
    nodev
    是否可以保留裝置檔案的特殊功能?一般來說只有 /dev 才會有特殊的裝置,因此你可以選擇 nodev 喔! dev
    exec
    noexec
    是否具有執(zhí)行 binary file 的權(quán)限? 如果你想要掛載的僅是資料區(qū) (例如 /home),那麼可以選擇 noexec ?。?/td> exec
    user
    nouser
    是否允許使用者進(jìn)行檔案的掛載與卸載功能? 如果要保護(hù)檔案系統(tǒng),最好不要提供使用者進(jìn)行掛載與卸載吧! nouser
    auto
    noauto
    這個 auto 指的是『mount -a』時,會不會被掛載的項目。 如果你不需要這個 partition 隨時被掛載,可以設(shè)定為 noauto。 auto

    一般來說,如果你的 NFS 伺服器所提供的只是類似 /home 底下的個人資料, 應(yīng)該不需要可執(zhí)行、SUID 與裝置檔案,因此當(dāng)你在掛載的時候,可以這樣下達(dá)指令喔:
    [root@linux ~]# mount -t nfs -o nosuid,noexec,nodev,rw \                                    > 192.168.0.2:/home/public /home/nfs/public                                    [root@linux ~]# mount                                    192.168.0.2:/home/public on /home/nfs/public type nfs                                    (rw,noexec,nosuid,nodev,addr=192.168.0.2)                                    
    這樣一來你所掛載的這個檔案系統(tǒng)就只能作為資料存取之用,相對來說,對於用戶端是比較安全一些的。 所以說,這個 nosuid, noexec, nodev 等等的參數(shù)可得記得?。?br>
  • 關(guān)於 NFS 特殊的掛載參數(shù)
    除了上述的 mount 參數(shù)之外,其實針對 NFS 伺服器,咱們的 Linux 還提供不少有用的額外參數(shù)喔! 因為 NFS 使用的是 RPC 服務(wù),這個 RPC 必須要用戶端與伺服器端兩者都有啟動 RPC 才能運作。 在一般的模式底下,你想要在用戶端掛載伺服器端的 NFS 檔案系統(tǒng)時,一次指令只能掛載一次, 如果該次掛載由於某些問題 (例如伺服器未開機(jī)、RPC忘記開等等) 導(dǎo)致無法順利掛載時, 你只能等到連線逾時 (time out) 後,才能夠繼續(xù)工作。

    另外,當(dāng)建立連線後,RPC 會不斷的在用戶端與伺服器兩者之間進(jìn)行呼叫, 此時如果有一部主機(jī)失去連線,那麼 RPC 將會持續(xù)不斷的呼叫,直到伺服器或用戶端恢復(fù)連線為止。 此一行為將導(dǎo)致 RPC 服務(wù)出現(xiàn)延遲問題, 結(jié)果常常就造成你在執(zhí)行 df 或者是 mount 等指令時,出現(xiàn)『等等等等』的情況~ 這....真是要命!

    為了避免這些困擾,我們還有一些額外的 NFS 掛載參數(shù)可用!例如:

    參數(shù) 參數(shù)功能 預(yù)設(shè)參數(shù)
    fg
    bg
    當(dāng)執(zhí)行掛載時,該掛載的行為會在前景 (fg) 還是在背景 (bg) 執(zhí)行? 若在前景執(zhí)行時,則 mount 會持續(xù)嘗試掛載,直到成功或 time out 為止,若為背景執(zhí)行, 則 mount 會在背景持續(xù)多次進(jìn)行 mount ,而不會影響到前景的程序操作。 如果你的網(wǎng)路連線有點不穩(wěn)定,或是伺服器常常需要開關(guān)機(jī),那建議使用 bg 比較妥當(dāng)。 fg
    soft
    hard
    上頭不是談到掛載時會使用 RPC 呼叫嗎? 如果是 hard 的情況,則當(dāng)兩者之間有任何一部主機(jī)離線,則 RPC 會持續(xù)的呼叫,直到對方恢復(fù)連線為止。 如果是 soft 的話,那 RPC 會在 time out 後『重複』呼叫,而非『持續(xù)』呼叫, 因此系統(tǒng)的延遲會比較不這麼明顯。同上,如果你的伺服器可能開開關(guān)關(guān),建議用 soft 喔! hard
    intr 當(dāng)你使用上頭提到的 hard 方式掛載時,若加上 intr 這個參數(shù), 則當(dāng) RPC 持續(xù)呼叫中,該次的呼叫是可以被中斷的 (interrupted)。 沒有
    rsize
    wsize
    讀出(rsize)與寫入(wsize)的區(qū)塊大小 (block size)。 這個設(shè)定值可以影響用戶端與伺服器端傳輸資料的緩衝記憶容量。一般來說, 如果在區(qū)域網(wǎng)路內(nèi) (LAN) ,並且用戶端與伺服器端都具有足夠的記憶體,那這個值可以設(shè)定大一點, 比如說 32768 (bytes) 等,提升緩衝記憶區(qū)塊將可提升 NFS 檔案系統(tǒng)的傳輸能力! 但要注意設(shè)定的值也不要太大,最好是達(dá)到網(wǎng)路能夠傳輸?shù)淖畲笾禐橄蕖?/td> rsize=1024
    wsize=1024

    更多的參數(shù)可以參考 man nfs 的輸出資料喔! 通常如果你的 NFS 是用在高速運作的環(huán)境當(dāng)中的話,那麼可以建議加上這些參數(shù)的說:
    [root@linux ~]# mount -t nfs -o nosuid,noexec,nodev,rw \                                    > bg,soft,rsize=32768,wsize=32768 \                                    > 192.168.0.2:/home/public /home/nfs/public                                    
    則當(dāng)你的 192.168.0.2 這部伺服器因為某些因素而離線時,你的 NFS 可以繼續(xù)在背景當(dāng)中重複的呼叫! 直到 NFS 伺服器再度上線為止。這對於系統(tǒng)的持續(xù)操作還是有幫助的啦! 當(dāng)然啦,那個 rsize 與 wsize 的大小則需要依據(jù)你的實際網(wǎng)路環(huán)境而定喔

  • 將 NFS 開機(jī)即掛載
    要將 NFS 在開機(jī)的時候就掛載,該如何是好?就修改 /etc/fstab 即可??! 這個應(yīng)該不用多說吧!你應(yīng)該要瞭解的!舉例來說,像上述的掛載方式的話,你就得要這樣做:
    [root@linux ~]# vi /etc/fstab                                    192.168.0.2:/home/public   /home/nfs/public   nfs   nosuid,noexec,nodev,rw,                                    bg,soft,rsize=32768,wsize=32768   0   0                                    # 注意!上面的設(shè)定是同一行喔!不要搞錯囉! ^_^                                    

  • 無法掛載的原因分析
    如果用戶端就是無法掛載伺服器端所分享的目錄時,到底是發(fā)生什麼問題?你可以這樣分析看看:
    1. 使用者或用戶端身份權(quán)限不符:
      以上面的例子來說明,我的 /home/test 只能提供 192.168.0.0/24 這個網(wǎng)域,所以如果我在 192.168.0.2 這部伺服器中,以 localhost (127.0.0.1) 來掛載時,就會無法掛載上,這個權(quán)限概念沒問題吧! 那麼您可以試試看:
      [root@linux ~]# mount -t nfs localhost:/home/test /home/nfs                                        mount: localhost:/home/test failed, reason given by server: Permission denied                                        
      看到 Permission denied 了吧?沒錯啦~權(quán)限不符啦!如果確定您的 IP 沒有錯誤,那麼請通知伺服器端, 請管理員將你的 IP 加入 /etc/exports 這個檔案中。

    2. 伺服器或用戶端某些服務(wù)未啟動:
      這個最容易被忘記了!就是忘記了啟動 portmap 這個服務(wù)啦!如果您發(fā)現(xiàn)您的 mount 的訊息是這樣:
      [root@linux ~]# mount -t nfs localhost:/home/test /home/nfs                                        mount: RPC: Port mapper failure - RPC: Unable to receive                                        [root@linux ~]# mount -t nfs localhost:/home/test /home/nfs                                        mount: RPC: Program not registered                                        
      要嘛就是 portmap 忘記開,要嘛就是伺服器端的 nfs 忘記開!解決的方法就是去啟動這兩個咚咚啦!

    3. 被防火牆檔掉了:
      這個也很容易忘記了!那就是重新設(shè)定一下您的防火牆,這包含了兩部份,包括 iptables 與 TCP_Wrappers !因為我們啟動了 portmap ,這個東西有兩個資料需要分享出來,一個是 port 111 需要提供出去,因此您的 iptables 規(guī)則當(dāng)中,需要開放這個 port 喔!

    自動掛載 autofs 的使用
    在傳統(tǒng)的 NFS 檔案系統(tǒng)的使用當(dāng)中,如果用戶端要使用伺服器端所提供的 NFS 檔案系統(tǒng)時, 要嘛就是得在 /etc/fstab 當(dāng)中設(shè)定開機(jī)時掛載,要嘛就得要手動利用 mount 來掛載。 此外,用戶端得要預(yù)先手動的建立好掛載點目錄,然後掛載上來。

    不過有個小問題,我們知道 NFS 伺服器與用戶端的連線或許可能不會永遠(yuǎn)存在, 而 RPC 這個服務(wù)又挺討厭的,如果掛載了 NFS 伺服器後,任何一方離線都可能造成另外一方老是在等待逾時~ 而且,掛載的 NFS 檔案系統(tǒng)可能又不是常常被使用,但若不掛載的話,有時候要使用又得通知系統(tǒng)管理員, 這又很不方便....??!好討厭的感覺啊~@_@

    換個思考的角度:
    • 可不可以讓用戶端在有使用到 NFS 檔案系統(tǒng)的需求時才掛載?
    • 並且不需要事先建立掛載點?
    • 另外,當(dāng) NFS 檔案系統(tǒng)使用完畢後,可不可以讓 NFS 自動卸載,以避免可能的 RPC 錯誤?
    呵呵!好主意!在現(xiàn)在的 Linux 環(huán)境下這是可以達(dá)成的理想!用的就是 autofs 這個服務(wù)啦!

    autofs 可以預(yù)先定義好用戶端『預(yù)計掛載來自伺服器端的上層目錄』,以及其相關(guān)的對應(yīng) NFS 伺服器分享目錄。 至於在該目錄底下的對應(yīng)目錄則可以不需要額外設(shè)定。講這樣或許妳有點模糊,讓我們拿底下這個圖示來看看:


    圖四、自動掛載的設(shè)定檔內(nèi)容

    如上圖所示,我們的 autofs 主要設(shè)定檔為 /etc/auto.master,這個檔案的內(nèi)容很簡單, 如上所示,我只要定義出最上層目錄 (/home/nfs) 即可,至於後續(xù)的檔案則是該目錄底下各次目錄的對應(yīng)。 在 /etc/auto.nfs (這個檔案的檔名可自訂) 裡面則可以定義出每個次目錄所欲掛載的遠(yuǎn)端伺服器目錄! 然後:『當(dāng)我們在用戶端要使用 /home/nfs/public 的資料時,此時 autofs 才會去 192.168.0.2 掛載 /home/public !』且『當(dāng)隔了 5 分鐘沒有使用該目錄下的資料後, 則 /home/nfs/public 將會主動的卸載』。

    很不錯用的一個工具吧!那就讓我們在用戶端來玩一玩吧!

  • 建立主要設(shè)定檔 /etc/auto.master
    這個主要設(shè)定檔的內(nèi)容很簡單,只要有預(yù)設(shè)目錄及『資料對應(yīng)檔』即可。 那個資料對應(yīng)檔的檔名是可以自行設(shè)定的,在鳥哥這個例子當(dāng)中我使用 /etc/auto.nfs 來命名。
    [root@linux ~]# vi /etc/auto.master                                        /home/nfs  /etc/auto.nfs                                        [root@linux ~]# mkdir /home/nfs                                        # 注意!此時 /home/nfs 內(nèi)並沒有其他的目錄存在喔!                                        

  • 建立資料對應(yīng)檔內(nèi)的掛載資訊
    剛剛我們所指定的 /etc/auto.nfs 是自行設(shè)定的,所以這個檔案是不存在的。 那麼這個檔案的格式是如何呢?妳可以這樣看:
    [本地端目錄]  [-掛載參數(shù)]  [伺服器所提供的目錄]                                        參數(shù):                                        [本地端目錄] :指的就是在 /etc/auto.master 內(nèi)指定的目錄之次目錄                                        [-掛載參數(shù)]  :就是前一小節(jié)提到的 rw,bg,soft 等等的參數(shù)啦!可有可無;                                        [伺服器所提供的目錄] :例如 192.168.0.2:/home/public 等                                        [root@linux ~]# vi /etc/auto.nfs                                        public  -rw,bg,soft,rsize=32768,wsize=32768 192.168.0.2:/home/public                                        testing -rw,bg,soft,rsize=32768,wsize=32768 192.168.0.2:/home/test                                        temp    -rw,bg,soft,rsize=32768,wsize=32768 192.168.0.2:/tmp                                        # 參數(shù)部分,只要最前面加個 - 符號即可!                                        
    這樣就可以建立對應(yīng)了!要注意的是,那些 /home/nfs/public 是不需要事先建立的! 咱們的 autofs 會事情況來處理喔!好了,接下來讓我們看看如何實際運作吧!

  • 實際運作與觀察
    設(shè)定檔設(shè)定妥當(dāng)後,當(dāng)然就是要啟動 autofs 啦!
    [root@linux ~]# /etc/init.d/autofs start                                        
    假設(shè)妳目前並沒有掛載任何來自 192.168.0.2 這部 NFS 伺服器的目錄,好了, 讓我們實際來觀察看看,如果我要進(jìn)入 /home/nfs/public 時,檔案系統(tǒng)會如何變化呢?
    [root@linux ~]# mount; df                                        # 妳不會看到任何跟 192.168.0.2 這部主機(jī)有關(guān)的 NFS 掛載資訊喔!                                        [root@linux ~]# cd /home/nfs/public                                        [root@linux public]# mount; df                                        192.168.0.2:/home/public on /home/nfs/public type nfs (rw,bg,soft,                                        rsize=32768,wsize=32768,addr=140.116.44.179)                                        # 上面的輸出是同一行!瞧!突然出現(xiàn)這個玩意兒!                                        Filesystem 1K-blocks     Used Available Use% Mounted on                                        192.168.0.2:/home/public                                        10080488  2144288   7424136  23% /home/nfs/public                                        # 檔案的掛載也出現(xiàn)沒錯!                                        [root@linux public]# pwd                                        /home/nfs/public                                        # 這個目錄突然被生出來了! ^_^                                        
    呵呵!真是好?。∪绱艘粊?,如果真的有需要用到該目錄時,系統(tǒng)才會去相對的伺服器上面掛載! 若是一陣子沒有使用,那麼該目錄就會被卸載呢!這樣就減少了很多不必要的使用時機(jī)啦! 還不錯用吧! ^_^

  • 案例演練
    假設(shè)環(huán)境:
    1. 假設(shè)我的 Linux 主機(jī)為 192.168.0.100 這一部;
    2. 預(yù)計將 /tmp 以可讀寫,並且不限制使用者身份的方式分享給所有 192.168.0.0/24 這個網(wǎng)域中的所有 Linux 工作站;
    3. 預(yù)計開放 /home/nfs 這個目錄,使用的屬性為唯讀,可提供除了網(wǎng)域內(nèi)的工作站外,向外亦提供資料內(nèi)容;
    4. 預(yù)計開放 /home/upload 做為 192.168.0.0/24 這個網(wǎng)域的資料上傳目錄,其中,這個 /home/upload 的使用者及所屬群組為 nfs-upload 這個名字,他的 UID 與 GID 均為 210;
    5. 預(yù)計將 /home/andy 這個目錄僅分享給 192.168.0.50 這部 Linux 主機(jī),以提供該主機(jī)上面 andy 這個使用者來使用,也就是說, andy 在 192.168.0.50 及 192.168.0.100 均有帳號,且?guī)ぬ柧鶠?andy ,所以預(yù)計開放 /home/andy 給 andy 使用他的家目錄啦!
    實地演練:

    好了,那麼請您先不要看底下的答案,先自己動筆或者直接在自己的機(jī)器上面動手作作看,等到得到您要的答案之後, 再看底下的說明吧!
    1. 首先,就是要建立 /etc/exports 這個檔案的內(nèi)容囉,您可以這樣寫吧!
      [root@linux ~]# vi /etc/exports                                            /tmp         192.168.0.0/24(rw,no_root_squash)                                            /home/nfs    192.168.0.0/24(ro)  *(ro,all_squash)                                            /home/upload 192.168.0.0/24(rw,all_squash,anonuid=210,anongid=210)                                            /home/andy   192.168.0.50(rw)                                            

    2. 再來,就是要建立每個對應(yīng)的目錄的實際 Linux 權(quán)限了!我們一個一個來看:
      1. /tmp                                            [root@linux ~]# ll -d /tmp                                            drwxrwxrwt  5 root root 20480 Sep 22 22:52 /tmp                                            2. /home/nfs                                            [root@linux ~]# mkdir -p /home/nfs                                            [root@linux ~]# chmod 755 -R /home/nfs                                            # 修改較為嚴(yán)格的檔案權(quán)限將目錄與檔案設(shè)定成唯讀!不能寫入的狀態(tài),會更保險一點!                                            3. /home/upload                                            [root@linux ~]# groupadd -g 210 nfs-upload                                            [root@linux ~]# useradd -g 210 -u 210 -M nfs-upload                                            # 先建立對應(yīng)的帳號與群組名稱及 UID 喔!                                            [root@linux ~]# mkdir -p /home/upload                                            [root@linux ~]# chown -R nfs-upload:nfs-upload /home/upload                                            # 修改擁有者!如此,則使用者與目錄的權(quán)限都設(shè)定妥當(dāng)囉!                                            4. /home/andy                                            [root@linux ~]# ll -d /home/andy                                            drwx------    3 andy     andy         4096 Oct 28 13:37 andy                                            
      這樣子一來,權(quán)限的問題大概就可以解決囉!

    3. 啟動 portmap 與 nfs 服務(wù):
      [root@linux ~]# /etc/init.d/portmap start                                            [root@linux ~]# /etc/init.d/nfs start                                            [root@linux ~]# /etc/init.d/nfslock start                                            

    4. 在 192.168.0.50 這部機(jī)器上面演練一下:
      1. 確認(rèn)遠(yuǎn)端伺服器的可用目錄:                                            [root@linux ~]# /etc/init.d/portmap start                                            [root@linux ~]# /etc/init.d/nfslock start                                            [root@linux ~]# showmount -e 192.168.0.100                                            Export list for 192.168.0.100:                                            /tmp         192.168.0.*                                            /home/nfs    (everyone)                                            /home/upload 192.168.0.*                                            /home/andy   192.168.0.50                                            2. 建立掛載點:                                            [root@linux ~]# mkdir -p /home/zzz/tmp                                            [root@linux ~]# mkdir -p /home/zzz/nfs                                            [root@linux ~]# mkdir -p /home/zzz/upload                                            [root@linux ~]# mkdir -p /home/zzz/andy                                            3. 實際掛載:                                            [root@linux ~]# mount -t nfs 192.168.0.100:/tmp         /home/zzz/tmp                                            [root@linux ~]# mount -t nfs 192.168.0.100:/home/nfs    /home/zzz/nfs                                            [root@linux ~]# mount -t nfs 192.168.0.100:/home/upload /home/zzz/upload                                            [root@linux ~]# mount -t nfs 192.168.0.100:/home/andy   /home/zzz/andy                                            
    整個步驟大致上就是這樣吶!加油喔!

    重點回顧
    • Network FileSystem (NFS) 可以讓主機(jī)之間透過網(wǎng)路分享彼此的檔案與目錄;
    • NFS 主要是透過 RPC 來進(jìn)行 file share 的目的,所以 Server 與 Client 的 RPC 一定要啟動才行!
    • NFS 主機(jī)可以控制連線的 Client 端的登入與權(quán)限;
    • NFS 的設(shè)定檔就是 /etc/exports 這個檔案;
    • NFS 的權(quán)限可以觀察 /var/lib/nfs/etab,至於的重要登錄檔可以參考 /var/lib/nfs/xtab 這個檔案,還包含相當(dāng)多有用的資訊在其中!
    • NFS 伺服器與用戶端的使用者帳號名稱、UID 最好要一致,可以避免權(quán)限錯亂:
    • NFS 伺服器預(yù)設(shè)對用戶端的 root 進(jìn)行權(quán)限壓縮,通常壓縮其成為 nfsnobody 或 nobody。
    • NFS 主機(jī)要關(guān)機(jī)之前,請務(wù)必先關(guān)閉 portmap 與 nfs server ,否則關(guān)機(jī)無法順利成功;
    • NFS 主機(jī)在更動 /etc/exports 這個檔案之後,可以透過 exportfs 這個指令來重新掛載分享的目錄!
    • 可以使用 rpcinfo 來觀察 RPC program 之間的關(guān)係?。?!
    • NFS 主機(jī)在設(shè)定之初,就必須要考慮到 client 端登入的權(quán)限問題,很多時候無法寫入或者無法進(jìn)行分享,主要是 Linux 實體檔案的權(quán)限設(shè)定問題所致!
    • NFS 的防火牆設(shè)定可以透過控制 RPC 的主要 port ,亦即是 111 這個 port 來管理!此外,亦可透過 TCP_Wrappers 來管理!
    • NFS 用戶端只要成功 mount NFS 主機(jī)分享的目錄之後,使用上面就好像自己的 partition 一般;
    • NFS 用戶端可以透過使用 showmount, mount 與 umount 來使用 NFS 主機(jī)提供的分享的目錄!
    • NFS 亦可以使用掛載參數(shù),如 bg, soft, rsize, wsize, nosuid, noexec, nodev 等參數(shù), 來達(dá)到保護(hù)自己檔案系統(tǒng)的目標(biāo)!
    • 自動掛載的 autofs 服務(wù)可以在用戶端需要 NFS 伺服器提供的資源時才掛載。
    • 本章與 LPI 之間的關(guān)係:
      在 LPI 網(wǎng)站 http://www.lpi.org 裡面提到的,關(guān)於 NFS 的考試題庫的地方,只有在 LPI level 1 的 102 ,裡面的 topic 113 Networking Services ,第四點當(dāng)中,簡易的 NFS 設(shè)定。強調(diào)的是『應(yīng)試者需瞭解 NFS 的設(shè)定、啟動與關(guān)閉的關(guān)係』至於會考的檔案與指令可能有這些:
      • /etc/exports
      • /etc/fstab
      • mount
      • umount

    課後練習(xí)
    • NFS 的主要設(shè)定檔為何?而在該檔案內(nèi)主要設(shè)定項目為何?
    • 主要的設(shè)定檔為 /etc/exports 而至於其設(shè)定的內(nèi)容項目在每一行當(dāng)中則為:
      1. 分享的目錄
      2. 針對此分享目錄開放的主機(jī)或 IP或網(wǎng)域
      3. 針對這部主機(jī)所開放的權(quán)限參數(shù)!
    • 在 NFS 主要的設(shè)定檔當(dāng)中僅有少許的參數(shù)說明,至於預(yù)設(shè)的參數(shù)說明則沒有在該檔案當(dāng)中出現(xiàn), 請問,如果要查閱更詳細(xì)的分享出來的檔案的屬性,要看那個檔案?/li>
      /var/lib/nfs/etab
    • 如果已經(jīng)啟動了 nfs 這個伺服器,但是卻又修改過主要設(shè)定檔,請問可以使用那個指令來重新掛載分享出來的目錄與 client 端權(quán)限的設(shè)定值?
    • 透過使用 exportfs ,可以加上 -a 或者是 -rv 這兩個參數(shù)來重新掛載!如 exportfs -rv
    • 在 client 端如果要掛載 NFS 所提供分享的檔案,可以使用那個指令?
    • 那自然就是 mount 啦!還有卸載是 umount 喔!
    • 在 NFS 主要設(shè)定檔當(dāng)中,可以透過那個參數(shù)來控制不讓 client 端以 root 的身份使用您所分享出來的目錄與檔案?
    • 可以在 /etc/exports 當(dāng)中的參數(shù)項目,設(shè)定『 root_squash 』來控制壓縮 root 的身份喔!
    • 我在 client 端掛載了 NFS Server 的某個目錄在我的 /home/data 底下,當(dāng)我執(zhí)行其中某個程式時,卻發(fā)現(xiàn)我的系統(tǒng)被破壞了?您認(rèn)為可能的原因為何? 該如何克服這樣的問題,尤其是當(dāng)我的 Client 端主機(jī)其實是多人共用的環(huán)境, 怕其他的使用者也同樣發(fā)生類似的問題呢?!
      • 可能由於您掛載進(jìn)來的 NFS Server 的 partition 當(dāng)中具有 SUID 的檔案屬性,而您不小心使用了該執(zhí)行檔,因此就可能會發(fā)生系統(tǒng)被破壞的問題了!
      • 可以將掛載進(jìn)來的 NFS 目錄的 SUID 功能取消!例如:
        mount -t nfs -o nosuid,ro server:/directory /your/directory

    參考資料
    本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
    打開APP,閱讀全文并永久保存 查看更多類似文章
    猜你喜歡
    類似文章
    DEBIAN 下安裝nfs服務(wù)器以及配置簡單方法(做了些修改)
    NFS服務(wù)器
    簡單的NFS Server 配置
    Linux_NFS配置
    Ubuntu NFS服務(wù)器的配置
    鳥哥的 Linux 私房菜 ---簡易 NFS 服務(wù)器設(shè)定
    更多類似文章 >>
    生活服務(wù)
    分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
    綁定賬號成功
    后續(xù)可登錄賬號暢享VIP特權(quán)!
    如果VIP功能使用有故障,
    可點擊這里聯(lián)系客服!

    聯(lián)系客服