欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時間:2018年04月12日 09:39:27   作者:rollingstarky  
這篇文章主要介紹了Ubuntu16.04搭建NFS 文件共享服務(wù)器的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

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

一、軟件安裝

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

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

二、服務(wù)器配置

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

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

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

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

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

2. 修改 exports 文件

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

該文件的格式如下:

Directory Host(Options ...) Host(Options) #comment 關(guān)于 /etc/exports 文件的詳細(xì)語法格式可參考 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)

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

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

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

insecure選項:允許通過任意端口的遠(yuǎn)程訪問

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

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

三、客戶端掛載共享目錄

列出 nfs 服務(wù)器上的共享目錄

$ 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

掛載遠(yuǎn)程目錄

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

權(quán)限測試

如截圖所示:

nfs 權(quán)限測試

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

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

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

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

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

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

# 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 項用來指定可訪問對應(yīng)共享目錄的主機,其格式可分為以下幾種:

單個主機

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 組中所有主機的訪問權(quán)限,使用 @group

2. /etc/exports 文件中的 Options

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

3. NFS 掛載選項

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

4. NFS 協(xié)議討論

傳輸協(xié)議

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

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

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

State

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

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

文件鎖

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

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

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

安全相關(guān)

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

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

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

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

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

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

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

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

啟用 nfs 服務(wù)

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

mount 命令掛載共享目錄

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

無法寫入文件

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

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

默認(rèn)掛載選項

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

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

更改 UID 和 GID

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

參考資料

UNIX and Linux System Administration Handbook, 4th Edition

How to Mount an NFS Share Using a Windows 10 Machine

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Linux虛擬機復(fù)制文件到Windows主機的解決辦法

    Linux虛擬機復(fù)制文件到Windows主機的解決辦法

    這篇文章主要介紹了Linux虛擬機復(fù)制文件到Windows主機的解決辦法,文中通過代碼示例和圖文講解的非常詳細(xì),對大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2024-07-07
  • linux環(huán)境搭建圖數(shù)據(jù)庫neo4j的講解

    linux環(huán)境搭建圖數(shù)據(jù)庫neo4j的講解

    今天小編就為大家分享一篇關(guān)于linux環(huán)境搭建圖數(shù)據(jù)庫neo4j的講解,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-04-04
  • 基于Apache?Hudi在Google云構(gòu)建數(shù)據(jù)湖平臺的思路詳解

    基于Apache?Hudi在Google云構(gòu)建數(shù)據(jù)湖平臺的思路詳解

    這篇文章主要介紹了基于Apache?Hudi在Google云構(gòu)建數(shù)據(jù)湖平臺,本文提供了有關(guān)如何使用上述工具構(gòu)建基本數(shù)據(jù)管道的基本介紹,需要的朋友可以參考下
    2022-04-04
  • Linux 命令行通配符及轉(zhuǎn)義符的實現(xiàn)

    Linux 命令行通配符及轉(zhuǎn)義符的實現(xiàn)

    這篇文章主要介紹了Linux 命令行通配符及轉(zhuǎn)義符的實現(xiàn),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-11-11
  • Linux Centos 下使用yum 命令安裝mysql實現(xiàn)步驟

    Linux Centos 下使用yum 命令安裝mysql實現(xiàn)步驟

    這篇文章主要介紹了Linux Centos 下使用yum 命令安裝mysql實現(xiàn)步驟的相關(guān)資料,需要的朋友可以參考下
    2017-03-03
  • linux輸入yum后提示: -bash: /usr/bin/yum: No such file or directory的解決方法

    linux輸入yum后提示: -bash: /usr/bin/yum: No such file or director

    在本篇文章里小編給大家整理的是關(guān)于linux輸入yum后提示: -bash: /usr/bin/yum: No such file or directory的解決方法,有需要的朋友們參考下。
    2019-11-11
  • Linux獲取docker容器中的文件路徑的方法

    Linux獲取docker容器中的文件路徑的方法

    在Linux系統(tǒng)中,Docker容器中的文件路徑與宿主機上的文件系統(tǒng)是隔離的,因此我們不能直接使用宿主機的文件系統(tǒng)路徑來訪問容器內(nèi)的文件,但是,有幾種方法可以讓我們獲取或操作Docker容器中的文件,本文介紹的非常詳細(xì),需要的朋友可以參考下
    2024-11-11
  • 吸引發(fā)燒友的視聽Linux發(fā)行版

    吸引發(fā)燒友的視聽Linux發(fā)行版

    今天小編就為大家分享一篇關(guān)于吸引發(fā)燒友的Linux發(fā)行版,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-09-09
  • 在Linux環(huán)境如何將python腳本打deb包

    在Linux環(huán)境如何將python腳本打deb包

    為方便傳輸和使用Python腳本,可以將其制作成deb包。本文詳細(xì)介紹了在uos系統(tǒng)下使用debian目錄和相關(guān)文件來定制和構(gòu)建deb包,涵蓋創(chuàng)建配置文件、修改文件、設(shè)置安裝和鏈接規(guī)則等步驟,并提供了打包命令。這樣可以簡化腳本的分發(fā)和安裝過程,使其更加便捷
    2024-09-09
  • ubuntu安裝多個版本的CUDA并隨時切換

    ubuntu安裝多個版本的CUDA并隨時切換

    這篇文章主要介紹了ubuntu安裝多個版本的CUDA并隨時切換,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08

最新評論