我可以将一台 Linux 服务器上的用户 ID 更改为与 /etc/passwd 中的另一台服务器匹配吗?

我可以将一台 Linux 服务器上的用户 ID 更改为与 /etc/passwd 中的另一台服务器匹配吗?

我有一个位于虚拟机(RHEL 6)上的 Rails 应用程序,它的数据库位于专用硬件(也是 RHEL 6)上。

应用服务器已安装并可访问数据库服务器的 NFS 目录。它需要将通过应用上传的图像写入该服务器。

数据库服务器上的后台进程需要读取和写入同一个目录,因为它们对上传的文件执行调整大小的操作。

目前,这些都不起作用,因为两个系统之间的用户 ID 不同。我只需要这个应用程序能用,所以安装 LDAP 系统的开销太大了。

我是否可以简单地在其中一个系统中更改这个用户的用户 ID,或者这是否会造成大规模混乱?

更新:

修复成功了,至少在本地设备上如此。不幸的是,我安装到主数据库服务器的设备仍然认为我的用户 ID 是 502,而不是 506。我需要重新安装该设备吗?或者是否有一个 NFS 守护进程可以停止并重新启动以刷新它?

答案1

更改用户 ID 以使其匹配应该可行。请确保您切换到的 ID 尚未在系统上使用。同时请确保更新用户主目录和文件的所有权以反映新的用户 ID。

如果您经常使用 NFS,那么理想情况下您还应该使用某种集中式身份验证系统,如 LDAP 或 NIS。

答案2

我假设您的意思是编辑 passwd 文件来更改该用户的数字 UID,以便它与其他系统上的 UID 的数值相匹配。

如果属于此用户的文件/文件夹集相对较小且定义明确,则这是可行的。请记住,所有现有文件/文件夹的权限当前都设置为原始 UID。您将需要大量 chown:chgrp 命令来确保所有内容都指向正确的 ID。

我不太确定 ACL 会对此做出什么反应。从来没有理由去尝试。

最好在单用户模式下对 passwd 文件进行更改,然后重新启动系统。这将防止正在运行的软件出现问题,从而避免出现问题。

相关内容