成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

Ubuntu16.04搭建NFS文件共享服務器的方法

服務器

NFS 即 網(wǎng)絡文件系統(tǒng) (Network File System),是一種 分布式 文件系統(tǒng)協(xié)議,該協(xié)議允許客戶端主機可以像訪問本地文件系統(tǒng)一樣通過網(wǎng)絡訪問服務器端文件,即可以將遠程服務器文件直接 mount ( 掛載 )到本地的文件目錄結構中進行訪問。

創(chuàng)新互聯(lián)建站長期為上千多家客戶提供的網(wǎng)站建設服務,團隊從業(yè)經(jīng)驗10年,關注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務;打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為鳳泉企業(yè)提供專業(yè)的網(wǎng)站建設、網(wǎng)站設計,鳳泉網(wǎng)站改版等技術服務。擁有十載豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。

一、軟件安裝

服務器端需要安裝 nfs-kernel-server 軟件包:

$ sudo apt-get update 
$ sudo apt-get install nfs-kernel-server

二、服務器配置

默認情況下,NFS 服務器上定義了某個共享目錄,則該目錄及其子目錄下的所有文件都可被訪問。

出于對安全的考慮,客戶端任何需要 超級用戶 (即 root 用戶,UID=0 & GID=0)權限的文件操作都默認映射到 UID=65534 和 GID=65534 的用戶,即 Ubuntu 系統(tǒng)中的 nobody:nogroup。

例如客戶端使用 root 權限在掛載的共享目錄中創(chuàng)建文件時,該文件的 屬主 和 屬組 自動變?yōu)?nobody:nogroup ,而非 root:root 。

1. 在服務器端創(chuàng)建共享目錄

sudo mkdir -p /var/nfs/gernel 
sudo mkdir -p /var/nfs/public 
sudo chown nobody:nogroup /var/nfs/gernel

2. 修改 exports 文件

為了使 NFS 服務器定義的共享文件可被指定的客戶端主機訪問,需要在服務器端的 /etc/exports文件中添加對應的記錄。

該文件的格式如下:

Directory Host(Options ...) Host(Options) #comment關于 /etc/exports文件的詳細語法格式可參考 man exports。

文件示例:

/var/nfs/gernel 192.168.56.0/24(rw,insecure,sync,no_subtree_check)
/var/nfs/public *(ro,insecure,sync,no_subtree_check)
/home/starky 192.168.56.1(rw,insecure,no_root_squash,sync,no_subtree_check)

第一條紀錄表示 192.168.56.0/24 子網(wǎng) 中的所有主機都可掛載 var/nfs/gernel目錄并擁有讀寫( rw )權限

第二條紀錄表示 所有 主機都可掛載 /var/nfs/public目錄且擁有 只讀 ( ro )權限

第三條紀錄表示客戶端 IP 地址為 192.168.56.1 的主機可以掛載 /home/starky目錄并擁有 讀寫 權限,而且任何 root 權限(UID=0 , GID=0)的文件操作都不默認映射給 nobody:nogroup,而保持屬主(組)仍為 root( no_root_squash )

insecure選項:允許通過任意端口的遠程訪問

sync選項:強制 NFS 服務器在響應請求之前將文件的改動寫入磁盤(強調客戶端和服務端文件內容的一致性,但會降低文件操作的效率)。

no_subtree_check選項:禁用 subtree_check 。subtree_check 用來設置服務器在收到請求時,檢查該文件是否在指定目錄結構中依舊可用(該選項會在某些情況下發(fā)生錯誤:重命名某文件的同時,該文件在客戶端打開)。

三、客戶端掛載共享目錄

列出 nfs 服務器上的共享目錄

$ showmount -e 192.168.56.102
Exports list on 192.168.56.102:
/home/starky            192.168.56.1
/var/nfs/public           *
/var/nfs/gernel           192.168.56.0/24

創(chuàng)建掛載點

sudo mkdir -p /mnt/nfs/gernel 
sudo mkdir -p /mnt/nfs/public 
sudo mkdir -p /mnt/nfs/starky

掛載遠程目錄

sudo mount 192.168.56.102:/var/nfs/gernel /mnt/nfs/gernel 
sudo mount 192.168.56.102:/var/nfs/public /mnt/nfs/public 
sudo mount 192.168.56.102:/home/starky /mnt/nfs/starky

權限測試

如截圖所示:

nfs 權限測試

NFS 的權限設定基于 Linux 文件系統(tǒng)的權限管理,即客戶端掛載遠程共享目錄后,會把它們當成本地磁盤目錄一樣對待,也是根據(jù)文件的屬主(組)及其對應的權限設定來限制訪問。

gernel 目錄的屬主(組)為 nobody:nogroup(65534:65534),所以雖然該目錄為讀寫權限,非 root 用戶無法執(zhí)行新建操作。而 root 用戶由于 NFS 默認的安全機制,會自動映射到 nobody:nogroup。

由于我在客戶端和服務端都有一個名為 starky 的用戶,且它們的 UID:GID 都為1000:1000,所以服務端的 /home/starky目錄可以直接被客戶端的 starky 用戶訪問。且由于 no_root_squash 選項,通過 sudo 命令創(chuàng)建的文件其屬主仍為 root(而不會再映射為 nobody)。

當然這會導致一些安全問題,比如多個客戶端同時都有 UID(GID)為1000的用戶(不管用戶名是什么),則這些用戶會共享服務端 /home/starky目錄里的文件權限。

四、系統(tǒng)啟動時自動掛載共享目錄

可編輯 /etc/fstab文件令掛載共享目錄的 mount 操作成為系統(tǒng)的固定配置(手動輸入的 mount 命令屬于臨時掛載,重啟會自動卸載),使得系統(tǒng)重啟后可以自動掛載遠程文件系統(tǒng)。 /etc/fstab文件的示例內容如下:

# filesystem          mountpoint    fstype flags            dump  fsck
192.168.56.102:/var/nfs/gernel /mnt/nfs/gernel nfs   rw,bg,intr,hard,nodev,nosuid 0    0
192.168.56.102:/var/nfs/public /mnt/nfs/public nfs4  ro,bg,intr,soft,nodev,nosuid 0    0
192.168.56.102:/home/starky   /mnt/nfs/starky nfs   rw,bg,intr,hard,nodev,nosuid 0    0
附錄:

附錄:

1. /etc/exports 文件中的 Host 格式

/etc/exports文件的格式為: Directory Host(Options ...) Host(Options) #comment

其中的 Host 項用來指定可訪問對應共享目錄的主機,其格式可分為以下幾種:

單個主機

Host 項可以為一個或多個單獨的 TCP/IP 主機名或 IP 地址

admin
admin.starky.net
192.168.56.101

IP 子網(wǎng)

10.0.0.0/255.0.0.0 
172.16.0.0/255.255.0.0
192.168.56.0/24

TCP/IP 域

通過使用 通配符 ,可以指定某個特定域中的全部或部分主機

*.starky.net
*craft.starky.net
???.starky.net

NIS 組

可以指定某個 NIS 組中所有主機的訪問權限,使用 @group

2. /etc/exports 文件中的 Options

選項 描述 ro 只讀權限 rw 讀寫權限(默認) rw=list 通過list指定具有寫權限的客戶端主機,其他主機則為只讀權限 root_squash 將 UID 0 和 GID 0 映射到 anonuid 和 anongid(即 Ubuntu 系統(tǒng)中的 nobody 和 nogroup) no_root_squash 允許需要 root 權限的文件操作,有安全風險 all_squash 將所有的 UID 和 GID 映射到它們的匿名形式,主要針對不信任的主機 anonuid=xxx 指定客戶端 root 權限的操作需要映射到的 UID(默認是65534) anongid=xxx 指定客戶端 root 權限的操作需要映射到的 GID(默認是65534) insecure 允許通過任意端口的遠程訪問 async 服務器可以在寫入硬盤之前響應客戶端的寫入請求 wdelay 通過延遲同步多個客戶端對文件的更新 sec=flavor 指定共享目錄的安全驗證方法,包括sys(UNIX 驗證),dh(DES),krb5i,krb5p和none(匿名訪問)

3. NFS 掛載選項

選項 描述 rw 以讀寫模式掛載文件系統(tǒng)(rw 也需在服務端定義) ro 以只讀模式掛載文件系統(tǒng) bg 如掛載失敗(服務器無響應),在后臺繼續(xù)嘗試并執(zhí)行其他掛載請求 hard 如果服務器無響應,重復發(fā)送請求直到服務器回復 soft 如果服務器無響應,重復發(fā)送請求,超過一定時間后返回錯誤,而不會一直阻塞 intr 允許用戶中斷阻塞的文件操作(并返回錯誤) nointr 不允許用戶中斷客戶端的文件操作請求 retrans=n 在 soft 模式下,指定返回錯誤前重復發(fā)送請求的次數(shù) timeo=n 設置超時后重復發(fā)送請求的時間間隔(單位 1/10 秒) rsize=n 設置讀取 buffer 大小為 n bytes wsize=n 設置寫入 buffer 大小為 n bytes sec=flavor 設置安全驗證方法 proto=proto 設置傳輸協(xié)議,NFSv4 必須為 TCP

4. NFS 協(xié)議討論

傳輸協(xié)議

最初的 NFSv2 由于性能原因使用 UDP 協(xié)議,雖然 NFS 添加了自己的 包序列重組 和 錯誤檢查 功能,但 UDP 和 NFS 都不具備 阻塞控制 算法,所以在大型的互聯(lián)網(wǎng)絡環(huán)境中缺乏足夠的性能。

NFSv3 提供了 UDP 和 TCP 協(xié)議之間的選擇。NFSv4 只能使用 TCP 協(xié)議。

隨著 CPU,內存等硬件設備和網(wǎng)絡傳輸速度的提高,最初由于性能需求而傾向 UDP 協(xié)議的選擇也變得不再必要。

State

NFSv2 和 NFSv3 是 無狀態(tài) 的連接,服務端不會跟蹤客戶端對共享目錄的掛載情況,而是使用 cookie 來記錄一次成功的掛載。cookie 不會因為服務器重啟而刪除,可以用來在服務器掛掉之后保留客戶端的連接信息。

NFSv4 是 有狀態(tài) 的連接,客戶端和服務端都會維護文件操作紀錄及文件鎖的狀態(tài)。所以不再需要 cookie 的使用。

文件鎖

早期版本的 NFS 協(xié)議(v2 & v3)由于是 無狀態(tài) 的連接,它們并不清楚哪些主機正在使用哪些文件。但是文件鎖的實現(xiàn)又需要獲取狀態(tài)信息。所以早期協(xié)議中的文件鎖是獨立于 NFS 實現(xiàn)的。

而 NFSv4 將文件鎖的實現(xiàn)整合到了核心協(xié)議中,雖然此舉增加了復雜度,但同時也解決了早期版本中的很多問題。

但是為了兼容使用 V2 和 V3 協(xié)議的客戶端,獨立的 locked 和 statd 守護進程仍舊需要。

安全相關

NFS 協(xié)議最初在設計時并不關注安全性,NFSv4 通過引入對更強大的安全服務和身份驗證的支持,加強了該協(xié)議的安全性。

傳統(tǒng)的 NFS 協(xié)議大多使用 AUTH_SYS 驗證方式,基于 UNIX 的用戶和組標識。在這種方式下,客戶端只需要發(fā)送自己的 UID 和 GID 并與服務器上的 /etc/passwd文件內容作對比,以決定其擁有怎樣的權限。

所以當多個客戶端存在 UID 相同的用戶時,這些用戶會擁有相同的文件權限。更進一步,擁有 root 權限的用戶可以通過 su 命令切換到任意 UID 登錄,服務器會因此給予其對應 UID 的權限。

為了防止上面的問題出現(xiàn),服務器可選擇使用更健壯的驗證機制比如 Kerberos 結合 NFS PRCSEC_GSS。

NFS 共享目錄的訪問控制基于 /etc/exports文件中定義的主機名或 IP 地址。但是客戶端很容易針對其身份和 IP 地址造假,這也會導致一些安全問題。

NFSv4 只使用 TCP 作為自己的傳輸協(xié)議,而且通常只開放 2049 端口進行數(shù)據(jù)傳輸。在配置防火墻時,除了放開 2049 端口的限制外,還要時刻注意數(shù)據(jù)傳輸?shù)脑吹刂泛湍繕说刂贰?/p>

5. Windows 系統(tǒng)掛載共享目錄

win10 系統(tǒng)默認不能掛載 NFS 共享目錄,需要進入 控制面板 - 程序 - 程序和功能 - 啟用或關閉 Windows 功能 ,勾選上 NFS 服務 。

之后就可以使用 mount 命令掛載共享目錄了。

只是 Windows 系統(tǒng)并不使用 Linux 那樣的用戶管理,導致掛載的共享目錄只能讀取而沒有寫入的權限。

解決辦法是在 注冊表 中新建兩個 DWORD 值,用作 匿名用戶 的 UID 和 GID。

默認參數(shù)下的掛載選項,UID 和 GID 都為 -2:

可進入 注冊表編輯器 ( regedit ),定位到 HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\ClientForNFS\\CurrentVersion\\Default ,新建兩個名為 AnonymousUid 和 AnonymousGid 的 DWORD(32位)值,改成自己需要用到的數(shù)字(我都改成了 0 ,即對應 Linux 系統(tǒng)中的 root 用戶。如需要改為 0 以外的數(shù)字,注意先轉換成 16 位)。

此時的掛載選項變?yōu)椋?/p>

如更改未生效,可重啟電腦。

參考資料

UNIX and Linux System Administration Handbook, 4th Edition

How to Mount an NFS Share Using a Windows 10 Machine

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持創(chuàng)新互聯(lián)。

分享題目:Ubuntu16.04搭建NFS文件共享服務器的方法
當前地址:http://jinyejixie.com/article44/cghjee.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供標簽優(yōu)化、全網(wǎng)營銷推廣、營銷型網(wǎng)站建設、面包屑導航、小程序開發(fā)品牌網(wǎng)站設計

廣告

聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站網(wǎng)頁設計