Nfs
如何在離散目錄樹中定義 NFS 根?
我想為多個 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 就是這樣工作的。