
我在一個擁有三個 Ubuntu 系統的實驗室工作,我想透過 NFS 交叉掛載一些檔案系統。然而,雖然這些系統具有一些相同的用戶名,但 UID 和 GID 並不匹配,因為這三個系統是單獨設定的。當我將 NFS 檔案系統從一個系統安裝到另一個系統時,所有權顯示錯誤。例如,如果 UID 1000 是 server1 上的 alice,而相同的 UID 1000 是 server2 上的 bob,則當 server1 掛載 server2 的匯出檔案系統時,bob 的檔案將顯示為 alice 所有。
那麼有沒有辦法讓 NFS (v4) 透過關聯的使用者名稱在伺服器之間轉換 UID?透過 Google 搜索,我看到了很多對 Kerberos、LDAP 或 NIS 的引用,對於這樣一個簡單的任務來說,這似乎是巨大的殺傷力,而且可能是不可能的,因為這些系統不是集中管理的。這個連結似乎表明我所要求的是不可能的。這是對的嗎?
編輯:我已經嘗試了/etc/idmapd.conf
我能想到的或在互聯網上找到的所有配置,雖然 idmapd 進程顯然正在運行,但到目前為止我還沒有看到任何證據表明 NFS 正在嘗試使用它,並且它從未對NFS安裝上報告的用戶ID 產生任何影響。
答案1
NFSv4 支援 ID 對映。啟用後,NFS 將傳輸使用者名稱而不是數位 ID。主機對相同使用者有不同的數字 uid 不是問題,因為使用者名稱對應到主機上的 uid。
ID 映射始終與 Kerberos 安全模式 ( ) 一起使用sec=krb5
。
Id 映射也可以在 AUTH_UNIX(預設sec=sys
)模式下使用。我已經在回答中解釋了配置詳細資訊:如何讓 NFSv4 idmap 與 sec=sys 一起使用。
答案2
由於沒有集中的用戶管理,我認為「最好」的方法是強制所有伺服器為每個用戶使用相同的 GID 和 UID。現在......我只談論文件和/或目錄。
在這種情況下我會做的是:
- 註冊目前使用的每個 UID 和 GID。
- 編輯
/etc/passwd
並/etc/group
匹配所有伺服器上的群組。最好是新的 UID 和 GID,這樣下一步會更快 運行這個(需要一些時間):
find / -group <OLD_GID> -exec chgrp <NEW_GID> '{}' \+ find / -user <OLD_UID> -exec chown <NEW_UID> '{}' \+