Nfs

如何在離散目錄樹中定義 NFS 根?

  • June 14, 2021

我想為多個 docker 容器設置一個 NFS 伺服器,我在archlinux-wiki上找到了文件。我認為這個項目是了解 NFS 配置及其安全細節的有用範例。

我不確定下面的句子是什麼意思以及如何去做。

一個好的安全實踐是在離散的目錄樹中定義一個 NFS 根,這將使使用者限制在該掛載點。

這是否只是意味著為共享數據創建一個特定的目錄,而不是讓它跨越多個使用者的主目錄?

伺服器作業系統:centos7 或 8

我想我知道這裡發生了什麼以及為什麼 Arch wiki 令人困惑。

早在 1990 年代(版本 3 和更早版本)的古代 NFS 版本可以簡單地導出位於文件系統中任何位置的任意目錄。NFSv4 改變了這種情況,它要求所有導出的目錄都是頂級“根”導出的子目錄,該導出由系統管理員定義,並帶有導出選項fsid=0以將其區分為根。沒有預定義的根;管理員明確選擇定義根。

因此,如果您定義/srv/nfs為根目錄,則所有其他 NFSv4 導出都必須是該目錄的子目錄。

但是,您要導出的目錄很可能實際上不在/srv/nfs. 例如,您可能想要導出/var/lib/docker/volumes. 為此,您可以創建綁定掛載,以便文件保留在文件系統中的原始位置,但在綁定下也可見安裝路徑。

mkdir /srv/nfs/volumes
mount --bind /var/lib/docker/volumes /srv/nfs/volumes

現在這些文件在文件系統樹的兩個位置都可用,因此,NFSv4 可以導出它們。

我仍然感到困惑的唯一一點是,為什麼 Arch wiki 將其稱為“良好的安全實踐”,而 NFSv4 就是這樣工作的。

引用自:https://serverfault.com/questions/1066642