• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • 構建Linux上的NFS服務器

    發表于:2007-05-26來源:作者:點擊數: 標簽:
    NFS是網絡文件系統(Network File System)的簡稱,是分布式計算系統的一個組成部分,可實現在異種網絡上共享和裝配遠程文件系統。 NFS由Sun公司 開發 ,目前已經成為文件服務的一種標準(RFC1904,RFC1813)。其最大的功能就是可以通過網絡,讓不同操作系統
     NFS是網絡文件系統(Network File System)的簡稱,是分布式計算系統的一個組成部分,可實現在異種網絡上共享和裝配遠程文件系統。

    NFS由Sun公司開發,目前已經成為文件服務的一種標準(RFC1904,RFC1813)。其最大的功能就是可以通過網絡,讓不同操作系統的計算機可以共享數據,所以也可以將它看做是一個文件服務器(見圖1所示)。NFS提供了除Samba之外,WindowsLinuxUnix與Linux之間通信的方法。

    圖1 NFS Server和Client PC示意圖

        Client端PC可以掛載NFS Server所提供的目錄,并且掛載之后這個目錄看起來就像本地的磁盤分區一樣,可以使用cp、cd、mv、rm、df等磁盤相關的指令。NFS有屬于自己的協議與使用的端口號碼,但是在資料傳送或者其它相關訊息傳遞的時候,NFS Server使用的則是一個稱為遠程過程調用(Remote Procedure Call, RPC)的協議來協助NFS Server本身的運作。

        NFS本身的服務并沒有提供資料傳遞的協議,但是它卻能進行文件的共享。原因就是NFS使用到一些其它相關的傳輸協議,而這些傳輸的協議就是遠程過程調用(Remote Procedure Call, RPC)。NFS也可以視為一個RPC Server。需要說明的是,要掛載NFS Server的Client PC主機,也需要同步啟動遠程過程調用。這樣Server端和Client端才能根據遠程過程調用協議進行數據共享。

        使用NFS Server需要啟動至少兩個daemons(系統守護進程),一個用來管理Client PC是否可以登入的問題,另一個管理登入主機后的Client PC能夠使用的文件權限。說明如下:

    ◆ rpc.nfsd 它的主要的功能就是管理Client端PC登入主機的權限,其中包含這個登入者的ID的判別。

    ◆ rpc.mountd 它的主要功能是管理NFS的文件系統。當Client PC順利地通過rpc.nfsd而登入主機之后,在使用NFS Server提供的文件前,還必須取得使用權限的認證。程序會讀NFS的/etc/exports來比對Client端PC的權限。
        要激活NFS必須要有兩個系統服務才行,它們分別是portmap和nfs-utils。NFS其實可以被視為一個RPC Server,要激活任何一個RPC Server之前,需要做好端口的對應 (Mapping)工作才行。這個工作就是portmap這個服務所負責的。nfs-utils就是提供rpc.nfsd及rpc.mountd這兩個NFS daemons與其它相關說明文件等的系統服務。

    NFS Server端的設定

        NFS Server端的設定,首先需要確認Linux主機是否可以支持NFS這項服務,然后再設定使用者的來源IP或主機名稱以及共享出去的目錄權限。

        那么,在Client PC怎么使用這個共享出來的目錄呢?首先以showmount檢查Linux Server是否有可以使用的 NFS目錄。如果有就將它mount在本機上面,這樣就可以使用NFS Server主機提供的資源了。

    1.系統要求

        除了前面已經提到的兩個系統守護進程portmap與nfs-utils之外,內核(Kernel)版本最好高于2.2.18。此外,如果重新編譯過內核,一定要選擇支持NFS。

    2.etc/exports

    編輯 /etc/exports文件:

    # vi /etc/exports
    /usr/src/sys -maproot=daemon host2
    /usr/ports -ro -network 192.168.1.0

        從上面這個例子中可以看出exports文件的格式,首先是定義要共享的文件目錄,必須使用絕對路徑,而不能使用符號連接。后面就是對這個目錄進行訪問限制的參數,用于保證安全性。第一行設置中,將/usr/sys/src目錄共享出去,但限制客戶機上的root用戶等價于本機上的daemon用戶,以避免客戶機上的root用戶擁有這個服務器上的root權力進行非法操作;此后的host2參數是主機名,這就限制只有host2才能共享這個/usr/sys/src目錄;第三行設置共享了/usr/ports目錄,但限制為只允許讀取,并且也只有192.168.1.0網絡上的計算機才能訪問這個共享目錄。

    ◆ rw 可擦寫的權限。

    ◆ ro 只讀的權限。

    ◆ no_root_squash 當登入NFS主機使用共享之目錄的使用者如果是root時,那么這個使用者的權限將被轉換成為匿名使用者,通常它的UID與GID都會變成nobody身份。

    ◆ root_squash 登入NFS主機使用共享目錄的使用者,如果是root,那么對于這個共享的目錄來說,它就具有 root的權限。

    ◆ all_squash 不論登入NFS使用者的身份為何,它的身份都會被轉換成為匿名使用者,通常也就是nobody。

    ◆ anonuid 通常為nobody,當然也可以自行設定這個UID的值,UID必須存在于/etc/passwd當中。

    ◆ anongid 同anonuid,但是變成group ID就是了。

    ◆ sync 資料同步寫入到內存與硬盤當中。

    ◆ async 資料會先暫存于內存當中,而非直接寫入硬盤。

    3.激活服務portmap和nfsd

    # /etc/rc.d/init.d/portmap  start
    # /etc/rc.d/init.d/nfs  start  

        portmap激活之后,就會出現一個端口號為111的sunrpc的服務。至于nfs則會激活至少兩個以上的系統守護進程,然后就開始監聽Client PC的需求,用cat/var/log/messages可以看到操作是否成功:

    #cat /var/log/messages
    Nov 16 15:04:45 cao portmap: portmap startup suclearcase/" target="_blank" >cceeded
    Nov 16 15:04:53 cao nfs: Starting NFS services:  succeeded
    Nov 16 15:04:54 cao nfs: rpc.rquotad startup succeeded
    Nov 16 15:04:54 cao nfs: rpc.mountd startup succeeded
    Nov 16 15:04:54 cao nfs: rpc.nfsd startup succeeded
     
    4.exportfs

        如果修改了/etc/exports這個文件后,不需要重新激活nfs,只要重新掃瞄一次/etc/exports的文件,并且重新將設定加載即可:

    # exportfs [-aruv]

    參數說明:

    -a 全部掛載(或卸載) /etc/exports 文件內的設定 。

    -r 重新掛載/etc/exports里的設定,此外,亦同步更新/etc/exports及/var/lib/nfs/xtab的內容。

    -u 卸載某一目錄。

    -v 在export的時候,將共享的目錄顯示到屏幕上。

    5.檢驗目錄/var/lib/nfs/xtab

        檢驗所共享的目錄內容,查看/var/lib/nfs/xtab這個文件:

    # vi /var/lib/nfs/xtab
    /home/cao  192.168.0.1(rw,sync,wdelay,hide,secure,root_squash,
    no_all_squash,subtree_check,secure_locks, mapping=identity,anonuid=-2,
    anongid=-2)
     
        這就是/home/cao這個共享出去的目錄預設NFS里面的屬性。

    6.showmount

    # showmount [-ae] hostname
     
    參數說明:

    -a 在屏幕上顯示目前主機與Client所連上來的使用目錄狀態 。

    -e 顯示hostname這部機器的/etc/exports里面的共享目錄。

    當要掃瞄某一主機所提供的NFS共享的目錄時,就使用showmount -e IP(或主機名稱hostname)即可。

    7.觀察激活的端口號

    # netstat -utln 
    Active Internet connections (only SERVERs)
    Proto Recv-Q Send-Q Local Address     Foreign Address         State
    tcp        0      0 0.0.0.0:111     0.0.0.0:*               LISTEN <== portmap
    tcp        0      0 0.0.0.0:817     0.0.0.0:*               LISTEN <== rpc.xxxx 
    tcp        0      0 0.0.0.0:1266    0.0.0.0:*               LISTEN <== rpc.xxxx
    udp        0      0 0.0.0.0:2049    0.0.0.0:*           <== nfs 的 port
    udp        0      0 0.0.0.0:814     0.0.0.0:*           <== rpc.xxxx
    udp        0      0 0.0.0.0:1327     0.0.0.0:*           <== rpc.xxxx
    udp        0      0 0.0.0.0:111      0.0.0.0:*           <== portmap
     
        nfs所開啟的端口是2049,其它的端口是RPC Server其它程序(例如rpc.mountd、rpc.rquotad、rpc.nfsd... )隨機產生的,也就是端口號不會是固定的,每次restart nfs都會得到不一樣的端口號。

    8. 停止NFS服務

    # /etc/rc.d/init.d/portmap stop
     
    Client端PC的設定

    1.掃瞄可以使用的NFS Server目錄

        在Client本地端建立mount point,使用mount將遠程主機共享的目錄掛載進來。假設主機名稱是www.cao.net,使用showmount查看NFS Server可以共享的目錄。然后將/home/public掛載在 /home/nfs/public下:

    # showmount -e www.cao.net
    Export list for localhost:
    /tmp         *
    /home/linux  *.cao.net
    /home/public (everyone)
    /home/cao   192.168.0.1
     
    2.掛載/home/public目錄

        首先建立這個目錄,然后再利用mount指令來掛載/home/public目錄:

    # mkdir -p /home/nfs/public 
    # mount -t nfs CAO.linux.org:/home/public /home/nfs/public
     
    掛載的格式:

    # mount -t nfs hostname(orIP):/directory/mount/point
    # df
    Filesystem           1K-blocks      Used Available Use% Mounted on
    /dev/hda1   1904920   1235380    572776  68% /
    /dev/hdb1   976344    115212    810736  13% /backup
    www.cao.net:/home/public     1904920   1235376    572776  69% /home/nfs/public
     
         將資料掛載進來后,只要進入/home/nfs/public目錄,就等于到了www.cao.net那部NFS Server的/home/public 目錄中。

    3.卸載使用umount

    # umount /home/nfs/public
     
        關機時如果NFS Server上面還有Client聯機,建議NFS Server關機之前,要先關掉portmap與nfs這兩個系統服務。如果無法正確地將這兩個系統服務關掉,那么先以netstat -utlp找出PID,然后使用kill殺掉進程,這樣才能正常關機。

    安全建議

         為了保障網絡安全,在使用NFS時最好結合TCP_Wrappers來限制使用范圍(如果只希望192.168.5.120 這個C地址,以及IP地址為192.168.5.123的主機掛載我的NFS Server):

    # vi /etc/hosts.allow
    portmap: 192.168.5.120/255.255.255.248 : allow
    portmap: 192.168.5.123              : allow
    # vi /etc/hosts.deny
    portmap: ALL : deny
     
        除了使用TCP_Wrappers之外,還可以使用iptables防火墻、/etc/exports權限設定來保障安全。

    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>