为什么NFS不能识别新的UID?

我有两台运行RHEL6的服务器。 我有两个root权限。 主服务器,我将其称为server ,是一个数据库服务器。 应用服务器(我将称之为client通过NFS从server挂载一个目录。

clientserver上都有一个用户appuser 。 但是, client上的appuser的UID是502appuserserver上的UID是506

两个用户都需要NFS共享上的读写function。 为了方便这个,我在server上创build了appuser所拥有的共享。

每个运行id appuser都会产生: uid=506(appuser)

当然, client不能识别所有权,因为appuserclient具有不同的ID。 所以我做了以下几点:

  • client上的/ etc / passwd中的用户的UID更改为506。

  • client上的appuser的$ HOME的所有权更改为appuser ,以便我可以login。

现在,当我从client端查看NFS共享时,我发现它拥有502502是客户端上的appuser的旧的ID。 我无法从client更改NFS共享的所有权,因为这是一个实际驻留在server上的卷。

我需要确保NFS共享显示来自serverclientappuser所有权。

我更改客户端上的appuser id后错过了哪些步骤?

:我没有重新启动client (或其他任何东西)。

id appuser可能会告诉你,shell仍然可以看到用户的旧UID。 注销并重新login。

好! 我已经知道了。 尝试多次后在Bing上find它。 仍然不确定哪个东西是由问题固定的,有两种可能性。 但他们在这里。

互联网上有“告诉”,NFS v4可能有客户所有权的问题。 我不知道这是真的,我不在乎。 有人有他们称之为解决scheme。 所以我按照说明强制客户端挂载驱动器作为NFS版本3.所以我做的第一件事是改变我在/ etc / fstab从我的挂载线权限:

 rw,hard,intr 

对此:

 rw,hard,intr,vers=3 

另外,我在客户端启动了nfs守护进程,只是因为有人说要这样做:

 service nfs start 

然后,因为我遵循一些date指示,我检查了是否在客户端上运行portmap服务:

 service portmap status 

并迎接:

 portmap: unrecognized service 

然后我发现portmap现在被转换成rpcbind 。 所以:

 service rpcbind status 

我看到:

 rpcbind dead but pid file exists 

然后:

 [root@myserver customers]# service rpcbind restart Stopping rpcbind: [FAILED] Starting rpcbind: [ OK ] 

然后我检查了NFS共享的所有权,这是正确的!

文件所有权与用户ID保存。 当你正在查看这些文件并在502 – > 506更改之前将它们看作是appuser所拥有的文件时,它们实际上由用户ID 502( ls -n will confirm)拥有。 这并没有改变。

因此,如果您想要将appuser视为所有者,则必须将文件的所有权从502更改为506.如果您没有对客户端的权限,则可能必须在服务器上执行此操作。

如何更改权限是一个不同的话题。 如果您无法访问服务器,则可以尝试使用新用户(假设您只有读取权限)复制这些文件,并稍后删除它们。 如果临时创build一个id为502的用户,可以更容易地更改502拥有的文件的权限(但不是所有权),重命名它们,或者在复制后删除它们。