Linux

為什麼掛載相同 NFS 共享的兩個系統之間的文件所有權不一致?

  • November 13, 2014

我有一台連接到 san 儲存的 IBM AIX 伺服器 (serverA)。我創建了一個卷組和文件系統 (jfs2) 並安裝到目錄 /profit。

之後,我為該目錄創建了一個 NFS 共享並啟動了 NFS 守護程序。

在另一台伺服器上,也就是 IBM AIX (serverB),我創建了一個掛載點 /profit,並使用以下命令將 nfs 共享從 serverA 掛載到 serverB:mount 192.168.10.1:/profit /profit

在 serverB 上,我可以訪問該目錄並列出其中的文件。但奇怪的是,在 serverA 上,目錄和文件都歸 oracle 使用者所有。但在 serverB 中,我將它們視為不同的使用者。

當我在 serverA 上的 serverB 上觸摸該目錄中的文件時,我將其視為另一個使用者 ID。

有什麼線索我可以解決這個問題嗎?

以下是來自 serverB 的文件列表

$ ls -l
total 0
-rwxrwxrwx    1 root     system            0 Mar 16 15:00 haha
-rwxrwxrwx    1 radiusd  radiusd           0 Mar 16 15:19 haha2
-rwxrwxrwx    1 radiusd  radiusd           0 Mar 16 15:31 haha3
-rw-r--r--    1 oracle   oinstall          0 Mar 17 2011  hahah3
drwxrwxrwx    2 radiusd  radiusd         256 Mar 16 14:40 lost+found

在 serverA 上,它如下所示:

# ls -l /profit
total 0
-rwxrwxrwx    1 root     system            0 Mar 16 15:00 haha
-rwxrwxrwx    1 oracle   dba               0 Mar 16 15:19 haha2
-rwxrwxrwx    1 oracle   dba               0 Mar 16 15:31 haha3
-rw-r--r--    1 10       sshd              0 Mar 17 16:01 hahah3
drwxrwxrwx    2 oracle   dba             256 Mar 16 14:40 lost+found

下面是來自 serverA 的 /etc/exports 文件

# more /etc/exports
/profit -vers=3,sec=sys:krb5p:krb5i:krb5:dh,rw

謝謝。

請記住,每個 NFS 客戶端系統都將通過使用本地系統的/etc/passwd或在集中式使用者數據庫中查找數字 UID 來確定使用者名。NFS 伺服器僅以數字格式儲存 UID,不知道使用者名。對於組名與 GID 也是如此。

在您的情況下, serverA 和 serverB 必須具有 /etc/passwd 中列出的不同使用者名

要對此進行測試,請使用ls -n以數字形式顯示使用者和組 ID,而不是在長 (-l) 輸出中轉換為使用者或組名。如果該ls -n選項在 AIX 上不可用,請查閱此功能的聯機幫助頁。

要查看使用者名到 uid 的映射,請在 serverA 和 serverB 上執行以下操作之一。

grep $THEUSERID /etc/passwd

或者,使用 是一個好習慣getent,因為它適用於 /etc/password 和目錄服務(LDAP 等):

getent passwd $THEUSERID

兩個系統上的 UID 應該相同,但使用者名會不同。

引用自:https://unix.stackexchange.com/questions/9442