如何在UID不匹配的系统之间进行NFSv4 UID映射?


11

我正在一个具有三个Ubuntu系统的实验室中工作,我想通过NFS跨挂载某些文件系统。但是,尽管系统具有某些相同的用户名,但是UID和GID不匹配,因为这三个系统是分别设置的。当我将NFS文件系统从一个系统安装到另一个系统时,所有权显示错误。例如,如果UID 1000是server1上的alice,而同一UID 1000是bob2上的bob,则当server1挂载server2的导出文件系统时,bob的文件似乎是alice所拥有。

那么,是否有任何方法可以使NFS(v4)通过服务器之间的关联用户名在服务器之间转换UID?对此进行了仔细的搜索,我看到了很多对Kerberos,LDAP或NIS的引用,对于这样一个简单的任务,这似乎是过大的杀伤力,并且由于这些系统不是集中管理的,因此可能无法实现。该链接似乎表明我的要求是不可能的。这是正确的吗?

编辑:我已经尝试过/etc/idmapd.conf可以在互联网上想到或找到的所有配置,并且尽管idmapd进程正在运行,但到目前为止,我还没有看到任何证据表明NFS完全在尝试使用它。它永远不会对NFS挂载上报告的用户ID产生任何影响。


1
我相信对您来说最简单的事情就是将所有东西整理好。您可能会继续使用当前的身份验证方案,因为只有三个框,但是您需要在框之间同步所有用户的UID / GID。实际上,这并不是一项艰巨的任务。
Serge 2012年

是的,那是我最终要做的。
瑞安·汤普森

Answers:


5

在没有集中式用户管理的情况下,我看到的“最佳”方法是让您强制所有服务器为每个用户使用相同的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> '{}' \+
    

嗯,“ find”语句从根目录开始。该命令正在更改系统上每个目录的所有权。对这些命令的建议更改将包括系统上的每个文件。我建议您限制此命令运行的目录,否则您的日子将会很糟糕。

2
来自find man:-group gname如果文件属于组gname,则为true。如果gname是数字并且未出现在group(4)数据库中,则将其视为组ID。
BitsOfNix 2014年

1

NFSv4支持ID映射。启用后,NFS将传输用户名而不是数字ID。对于同一用户,具有不同数字uid的主机不是问题,因为用户名已映射到主机上的uid。

ID映射始终与Kerberos安全模式(sec=krb5)一起使用。

ID映射也可以在AUTH_UNIX(默认sec=sys)模式下使用。我已经回答了以下配置详细信息:如何使sec = sys使用NFSv4 idmap

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.