Unix

Solaris NFS:使用者權限

  • September 2, 2012

我對 NFS 很陌生。我想確保我清楚。

如果 NFS 伺服器共享一個目錄 rw, 並且目錄中的所有文件都是權限 700 並且這些文件的使用者/組是 root/root,,,

在客戶端上,您必須以 root 身份登錄才能看到它。它是否正確?

我知道客戶端上的非 root 使用者可以建立直接連接來覆蓋它。(如不使用掛載,只需使用 NFS 客戶端破解。)

似乎任何有權訪問客戶端電腦的人都應該有權訪問文件,並且客戶端電腦應該忽略權限。只有伺服器應該處理權限。

我的理解正確嗎?有這種佈局是否正常?有沒有辦法忽略客戶端的權限?

我想說,總的來說,您對 NFS 的理解是正確的。以下是有關您提到的要點的一些詳細資訊:

NFSv3 伺服器只提供文件所有權和訪問權限。由客戶端來為特定使用者強制執行這些權限(即,當具有特定 UID 的程序正在請求和 fs 操作時)。

即使您使用加密、Kerberos 授權和 LDAP 設置 NFSv4(並且 Krb 和 LDAP 伺服器在不同的主機上執行),客戶端的 root 仍然具有至少與所有允許的使用者和組一樣多的 fs 權限的潛力。但是您可以再次保護非 root 使用者活動,甚至是專用網路上的其他主機。

通常客戶端會非常成功地強制執行使用者權限。我不知道有任何簡單的方法可以忽略 NFS 掛載的文件權限。如果這是您想要的,那麼只需將u=rwx,g=rwx,o=rwx所有文件夾和u=rw,g=rw,o=rw所有文件的權限設置為。

題外話:

> > 但請注意不要翻轉 setuid 位 - 這實際上最終會為您客戶端上的普通使用者(例如 www-data)提供 root shell。對於 NFS 和非 NFS 掛載,可以使用“-o nosuid”選項完全禁用 Setuid。 > > >

有一種方法可以為 Solaris 伺服器禁用/啟用 rootquash(在 Solaris 術語中它被稱為 rootquash 以外的東西——我忘記了它是什麼)。

您可以讓 Solaris 伺服器將整個共享標記為只讀,例如:

zfs set sharenfs="ro=@10.20.0.0/16" tank/home/tabriz

那麼無論客戶端做什麼,fs 都將不可寫。

即使程序可以使用 NFS 協議,客戶端上的非 root 使用者也可能無法打開與 NFS 伺服器的直接連接。這是因為NFS 客戶端通常被迫從特權埠連接,而在健康的客戶端上,只有 root 可以這樣做。

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