久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

Ubuntu如何搭建NFS文件共享服務器

166次閱讀
沒有評論

共計 5661 個字符,預計需要花費 15 分鐘才能閱讀完成。

今天丸趣 TV 小編給大家分享一下 Ubuntu 如何搭建 NFS 文件共享服務器的相關知識點,內容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。

nfs  即   網絡文件系統  (network file system),是一種   分布式   文件系統協議,該協議允許客戶端主機可以像訪問本地文件系統一樣通過網絡訪問服務器端文件,即可以將遠程服務器文件直接  mount (  掛載  )到本地的文件目錄結構中進行訪問。

一、軟件安裝

服務器端需要安裝  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 系統中的 nobody:nogroup。

例如客戶端使用 root 權限在掛載的共享目錄中創建文件時,該文件的   屬主   和   屬組   自動變為  nobody:nogroup ,而非  root:root 。

1. 在服務器端創建共享目錄

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 子網   中的所有主機都可掛載  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 用來設置服務器在收到請求時,檢查該文件是否在指定目錄結構中依舊可用(該選項會在某些情況下發生錯誤:重命名某文件的同時,該文件在客戶端打開)。

三、客戶端掛載共享目錄

列出 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

創建掛載點

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 文件系統的權限管理,即客戶端掛載遠程共享目錄后,會把它們當成本地磁盤目錄一樣對待,也是根據文件的屬主(組)及其對應的權限設定來限制訪問。

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

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

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

四、系統啟動時自動掛載共享目錄

可編輯  /etc/fstab  文件令掛載共享目錄的  mount  操作成為系統的固定配置(手動輸入的 mount 命令屬于臨時掛載,重啟會自動卸載),使得系統重啟后可以自動掛載遠程文件系統。 /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 子網

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 系統中的 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 以讀寫模式掛載文件系統(rw 也需在服務端定義)ro 以只讀模式掛載文件系統 bg 如掛載失敗(服務器無響應),在后臺繼續嘗試并執行其他掛載請求 hard 如果服務器無響應,重復發送請求直到服務器回復 soft 如果服務器無響應,重復發送請求,超過一定時間后返回錯誤,而不會一直阻塞 intr 允許用戶中斷阻塞的文件操作(并返回錯誤)nointr 不允許用戶中斷客戶端的文件操作請求 retrans= n 在 soft 模式下,指定返回錯誤前重復發送請求的次數 timeo= n 設置超時后重復發送請求的時間間隔(單位 1/10 秒)rsize= n 設置讀取 buffer 大小為 n byteswsize= n 設置寫入 buffer 大小為 n bytessec= flavor 設置安全驗證方法 proto= proto 設置傳輸協議,nfsv4 必須為 tcp

4. nfs 協議討論

傳輸協議

最初的 nfsv2 由于性能原因使用 udp 協議,雖然 nfs 添加了自己的   包序列重組   和   錯誤檢查   功能,但 udp 和 nfs 都不具備   阻塞控制   算法,所以在大型的互聯網絡環境中缺乏足夠的性能。

nfsv3 提供了 udp 和 tcp 協議之間的選擇。nfsv4 只能使用 tcp 協議。

隨著 cpu,內存等硬件設備和網絡傳輸速度的提高,最初由于性能需求而傾向 udp 協議的選擇也變得不再必要。

state

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

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

文件鎖

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

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

但是為了兼容使用 v2 和 v3 協議的客戶端,獨立的  locked  和  statd  守護進程仍舊需要。

安全相關

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

傳統的 nfs 協議大多使用 auth_sys 驗證方式,基于 unix 的用戶和組標識。在這種方式下,客戶端只需要發送自己的 uid 和 gid 并與服務器上的  /etc/passwd  文件內容作對比,以決定其擁有怎樣的權限。

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

為了防止上面的問題出現,服務器可選擇使用更健壯的驗證機制比如  kerberos  結合 nfs prcsec_gss。

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

nfsv4 只使用 tcp 作為自己的傳輸協議,而且通常只開放 2049 端口進行數據傳輸。在配置防火墻時,除了放開 2049 端口的限制外,還要時刻注意數據傳輸的源地址和目標地址。

5. windows 系統掛載共享目錄

win10 系統默認不能掛載 nfs 共享目錄,需要進入 控制面板 – 程序 – 程序和功能 – 啟用或關閉 windows 功能,勾選上  nfs 服務  。

啟用 nfs 服務

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

mount 命令掛載共享目錄

只是 windows 系統并不使用 linux 那樣的用戶管理,導致掛載的共享目錄只能讀取而沒有寫入的權限。

無法寫入文件

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

默認參數下的掛載選項,uid 和 gid 都為 -2:

默認掛載選項

可進入   注冊表編輯器  ( regedit ),定位到 hkey_local_machine\software\microsoft\clientfornfs\currentversion\default,新建兩個名為  anonymousuid  和  anonymousgid  的 dword(32 位)值,改成自己需要用到的數字(我都改成了 0,即對應 linux 系統中的 root 用戶。如需要改為 0 以外的數字,注意先轉換成 16 位)。

此時的掛載選項變為:

更改 uid 和 gid

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

以上就是“Ubuntu 如何搭建 NFS 文件共享服務器”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,丸趣 TV 小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注丸趣 TV 行業資訊頻道。

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-07-15發表,共計5661字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 靖边县| 平阳县| 巫山县| 茶陵县| 乌拉特前旗| 叙永县| 靖远县| 犍为县| 自贡市| 德惠市| 灌云县| 托克托县| 西藏| 沈丘县| 乌兰察布市| 平谷区| 西安市| 永康市| 南充市| 龙里县| 绥芬河市| 铁岭市| 景德镇市| 新蔡县| 安顺市| 元阳县| 白水县| 白玉县| 万源市| 玉门市| 定安县| 璧山县| 江永县| 桐梓县| 武平县| 镇江市| 太仆寺旗| 织金县| 松原市| 申扎县| 慈溪市|