如何防止 NFS 掛載任何 ACL?

如何防止 NFS 掛載任何 ACL?

我正在嘗試導出/掛載一個根本沒有 ACL 的 NFS 磁碟區(POSIX 或 NFS 磁碟區),但我失敗了。

技術背景:雙方最新的 debian、ext4 卷。

目標:我在伺服器上使用 POSIX ACL 強制執行嚴格的訪問,並且用戶可以(將)使用 NFS 訪問其他電腦上的磁碟區。但是擁有目錄/檔案的任何使用者都可以更改 ACL,這在這裡不好。所以我想阻止用戶更改 ACL,而簡單地刪除 get/setfacl 命令並不是一個好方法。刪除伺服器端磁碟區上的 ACL 支援並不好...

所以我的問題是:是否可以在不刪除伺服器端磁碟區上的 ACL 的情況下阻止 NFS 掛載 ACL?如果是的話如何執行?

我使用 no_acl / noacl 進行了測試,但沒有成功:我的匯出是在 NFSv3 版本中使用“no_acl”選項完成的。在 /etc/exports 中:

/exports ip-of-client-during-tests(rw,sync,no_acl,no_subtree_check,fsid=0)
/exports/data ip-of-client-during-tests(rw,sync,no_acl,no_subtree_check)

所有服務已重新載入/重新啟動。然後我使用“noacl”選項(無論如何)將其安裝在客戶端上:

mount -t nfs -o noacl,vers=3 my-server:/exports/data/ /var/data/

/proc/mounts 中給出:

server-name:/exports/data/ /var/data nfs rw,relatime,vers=3,rsize=524288,wsize=524288,namlen=255,hard,noacl,proto=tcp,timeo=600,retrans=2,sec=sys,mountaddr=server-ip,mountvers=3,mountport=53844,mountproto=udp,local_lock=none,addr=server-ip 0 0

我可以在客戶端上使用我擁有的目錄/檔案上的 get/setfacl 來取得/設定 ACL,並且更改在伺服器檔案系統上可見。我也嘗試過使用 NFSv4,沒有任何變化。順便說一句,在伺服器上我在 /proc/fs/nfs/exports 中看不到“no_acl”選項:

/exports/data   client-ip(rw,root_squash,sync,wdelay,no_subtree_check,uuid=0bac8439:e7e2488e:817358d2:f2c94b85,sec=1)

即使使用 exportfs -v 可見:

/exports/data   client-ip(rw,wdelay,root_squash,no_subtree_check,no_acl,sec=sys,rw,root_squash,no_all_squash)

答案1

您可以透過編譯不帶該選項的核心來停用伺服器端支援CONFIG_NFSD_V3_ACL

相關內容