NFS 分享 - 一個 IP 讀/寫,其餘為唯讀

NFS 分享 - 一個 IP 讀/寫,其餘為唯讀

我正在嘗試為我的家庭網路建立一些 NFS 共享,以便我可以更輕鬆地管理我的 NAS。我目前在家裡使用 Samba,但 NFS 對我來說速度更快,因為我​​使用 Ubuntu(除了 NAS 之外,其他人都運行 Windows)。

我想要做的是創建一些 NFS 共享,這些共享對除了我的機器之外的所有人都是唯讀的。我的NFS 共享工作正常,因為我可以將它們安裝在我的電腦上並瀏覽資料夾,但我被迫對它們進行唯讀操作,這很令人沮喪,因為我在配置/匯出中聲明了我的機器可讀/寫。

我的 /etc/exports 檔案如下所示(例如一行 - 有幾行具有相同的結果):

/mnt/TVShows    matt-pc.*(rw,sync,no_root_squash,no_subtree_check) 192.168.1.0/25(ro,sync,no_root_squash,no_subtree_check)

matt-pc.1 和 matt-pc.2 皆在 NAS 的主機檔案中定義。但無論如何,硬編碼 IP 也不起作用。

這也不起作用:

/mnt/TVShows    matt-pc.*(rw,sync,no_root_squash,no_subtree_check) *(ro,sync,no_root_squash,no_subtree_check)

我仍然只能只讀掛載。

驅動器以讀取/寫入方式安裝在 NAS 上,並且我的 Samba 共用設定正常運作(我可以強制以我的使用者帳戶登入 NAS 上,並且能夠讀取和寫入檔案)。

如果我像這樣格式化共享:

/mnt/TVShows    matt-pc.*(rw,sync,no_root_squash,no_subtree_check)

當嘗試安裝在客戶端電腦(我的電腦)上時,我只是收到權限錯誤。

這就是我在客戶端電腦上安裝的方式:

nas.local:/mnt/TVShows  /mnt/NFS/TVShows nfs auto,noatime,nolock,bg,nfsvers=4,intr,tcp,actimeo=1800 0 0

我可以做這個嗎?

答案1

/mnt/TVShows要匯出到所有其他rw,你可以在`/etc/exports 中編寫:nasmatt-pcro

#
/mnt/TVShows matt-pc(rw,no_subtree_check) 192.168.1.0/24(ro)

請注意,順序很重要。匯出到一台機器時會使用第一個符合的機器名稱/IP/網絡,因此首先是最特定的機器,最後是最通用的機器。不要以賦予太多權利的包羅萬象結束。

另請記住,每組選項都是下一組選項所固有的,因此您只需先具體說明即可。其餘的只是之前設定的變化。也要避免你不需要的既定意見。 (並始終閱讀相關的man(1) 頁和文件/usr/share/doc/"package name"/

也要檢查您使用的名稱是如何正確解析的。要使用它,請使用getent(1) 命令。像這樣:

$ getent hosts matt-pc

它的工作原理取決於 和resolv.conf/etc/hosts 或實際上是 的內容/etc/nsswitch.conf)。

若要在每台機器上安裝,請執行以下操作:

/etc/fstab
# ro, that is this line in all but matt-pc
nas.local:/mnt/TVShows  /mnt/NFS/TVShows nfs auto,ro,noatime,nolock,bg,nfsvers=4,intr,tcp 0 0
# rw, that is this line in only matt-pc
nas:/mnt/TVShows  /mnt/NFS/TVShows nfs auto,rw,noatime,nfsvers=4,tcp 0 0

但請注意,不要使用超出您實際需要的參數。

(是的,我更喜歡將伺服器上的磁碟安裝在 下/srv/,因為這是用於伺服器資源的,並且/mnt/更多用於臨時安裝。我通常有/srv/web/,等等/srv/files/music//srv/files/video它掩蓋了更容易進行備份)

相關內容