为什么挂载相同 NFS 共享的两个系统之间的文件所有权不一致?

Alv*_*Sim 5 linux users permissions nfs aix

我有一台连接到 san 存储的 IBM AIX 服务器 (serverA)。我已经创建了一个卷组和文件系统 (jfs2) 并挂载到目录 /profit。

之后,我为该目录创建了一个 NFS 共享并启动了 NFS 守护进程。

在另一台服务器上,这也是 IBM AIX(服务器 B),我创建了一个挂载点 /profit 并使用以下命令将 nfs 共享从 serverA 挂载到 serverB: mount 192.168.10.1:/profit /profit

在 serverB 上,我能够访问该目录并列出其中的文件。但奇怪的是,在serverA 上,目录和文件都在oracle 用户的所有权下。但是在 serverB 中,我将他们视为不同的用户。

当我在 serverB 和 serverA 上触摸该目录中的文件时,我将其视为另一个用户 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
Run Code Online (Sandbox Code Playgroud)

在 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
Run Code Online (Sandbox Code Playgroud)

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

# more /etc/exports
/profit -vers=3,sec=sys:krb5p:krb5i:krb5:dh,rw
Run Code Online (Sandbox Code Playgroud)

谢谢。

Ste*_*ski 13

请记住,每个 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
Run Code Online (Sandbox Code Playgroud)

或者,使用 是一个好习惯getent,因为它适用于 /etc/password 和目录服务(LDAP 等):

getent passwd $THEUSERID
Run Code Online (Sandbox Code Playgroud)

两个系统上的 UID 应该相同,但用户名会不同。

  • (不一定是 /etc/passwd。可能来自集中式目录服务——这对于任何大型 NFS 部署来说都是必不可少的。) (6认同)