Centos7

Openldap 和 nfserver,儘管 /home/user 無法創建,除非我首先使用新的 ldapuser 登錄到 nfserver,但兩者都可以工作

  • June 11, 2021

我有一個我在cent os 7 上設置的openldap 伺服器。我將它與我所有其他從nfs 伺服器掛載nfs 掛載到其/home 的VM 混合使用。

我剛剛發現,如果我創建一個新的 ldap 使用者,並嘗試登錄某個 VM,它可以讓我登錄,但說明它如何無法創建 /home/user 並且無法對其進行 chngdir。

但是我也了解到,如果我首先 ssh user@mynfsserver 它登錄,創建適當的 /home/user 然後我可以使用我的 ldapuser ssh 到任何其他 VM,它工作得很好,不再抱怨無法創建該使用者在家中的文件夾。

我在每個帶有 home.map 文件的 VM 上使用 autofs,它看起來具有正確的權限:

* -fstype=nfs,rw,nosuid,soft 10.10.1.139:/home/&

所以這感覺像是某種權限問題,使用者在使用新創建的 ldap 憑據登錄 VM 時出錯。但是,如果同一使用者登錄到 10.10.1.139(從其中映射 home 的 nfs 伺服器),那麼似乎讓他們登錄到虛擬機而不再出現無法創建 /home/user 錯誤。

我的 openldap 伺服器是否必須以某種方式了解 nfs 伺服器?

除了必須先登錄到 nfs 伺服器的麻煩之外,我可以轉到另一個虛擬機,觸摸該主文件夾中的文件,然後賓果遊戲就在我登錄的任何其他虛擬機上。所以這就像 95% 的工作,只是很煩人必須首先使用 ldap 使用者登錄到 nfserver 以使 /home/user 的創建首先在其他 VM 上工作。

新主目錄的自動創建由 root 完成,但預設情況下 root 映射到 nfs 掛載上的匿名使用者,因此無法在所有 nfs 客戶端上創建主目錄。添加no_root_squash到您/etc/exports的 nfs 伺服器上的線路以禁用此功能並執行sudo exportfs -ra以使更改生效。因此,根據您的評論,它應該如下所示:

/home 10.10.1.0/24(rw,no_root_squash)

這將允許 root 訪問所有客戶端上掛載的 nfs 文件系統。

然而,這有一些影響。從 exportfs 聯機幫助頁:

使用者 ID 映射

nfsd 基於每個 NFS RPC 請求中提供的 uid 和 gid 對伺服器電腦上的文件進行訪問控制。使用者期望的正常行為是她可以像在普通文件系統上一樣訪問她在伺服器上的文件。這要求在客戶端和伺服器機器上使用相同的 uid 和 gid。這並不總是正確的,也不總是可取的。

通常,在訪問 NFS 伺服器上的文件時,客戶端電腦上的 root 使用者也被視為 root 是不可取的。為此,uid 0 通常映射到不同的 id:即所謂的匿名或無人 uid。這種操作模式(稱為“root squashing”)是預設的,可以用 no_root_squash 關閉。

預設情況下,exportfs 選擇 65534 的 uid 和 gid 進行壓縮訪問。這些值也可以被 anonuid 和 anongid 選項覆蓋。最後,您可以通過指定 all_squash 選項將所有使用者請求映射到匿名 uid。

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