我有一个freeIPA域名,有几个客户端和一个Synology NAS(也注册了freeIPA)。
我在NAS上创build了一个共享文件夹,支持NFSv4 + krb5。 从客户端,我获得LDAP用户[email protected]的票证,我装载此文件夹。
最初,在这个文件夹中创build的文件将由nobody用户拥有。
我终于把它工作了,把NAS上的/etc/idmapd.conf
[email protected]和本地用户之间有一个静态映射 一般来说,我确实了解idmapd NFS的作用。
然而在这种情况下:
[email protected]是谁,为什么不能使用该uid作为该文件夹的文件所有权,而不是本地用户的uid? 我可以避免创build本地用户吗? 我目前的idmapd.conf如下所示:
[General] Domain=hq.example.com [Mapping] Nobody-User=guest Nobody-Group=users [Translation] Method=nsswitch GSS-Methods=static,synomap [Static] [email protected]=user1
我想实现的是,我不需要这个静态映射[email protected]=user1 ,如果可能的话,我甚至不需要在NAS上创build一个本地用户user1 。
简而言之,NFSv4协议依赖于服务器和客户端之间共享的用户名 ,而不是UID / GID 号 (在早期版本中使用),而UID <==>用户名映射实际上可能是不同的在客户端和服务器上。
作为NFSv4协议的一部分,服务器需要将通用安全上下文/权限,所有者和owner_group映射到对本地文件系统操作有意义的事情。 该映射是由Linux系统上的IDMAPD完成的。
在Linux系统上,许多本地文件系统操作都是基于UID / GID的,但是在将这些操作传送到NFS服务器之前,需要将这些操作转换为共享的NFSv4上下文。
也许RFC 3530可以更好地解释它:
§5.8。 解释所有者和owner_group
build议的属性
"owner"和"owner_group"(以及“acl”属性中的用户和组)用UTF-8string表示。 为了避免在客户端或服务器上绑定到特定底层实现的表示,已经select使用UTF-8string。 请注意,[RFC2624]第6.1节提供了额外的基本原理。 预计客户端和服务器将拥有自己的本地代表所有者和owner_group,用于本地存储或向最终用户呈现。 因此,当这些属性在客户端和服务器之间传送时,本地表示被转换为"user@dns_domain"forms的语法。 这将允许不使用相同的本地表示的客户机和服务器能够转换为可以由两者解释的通用语法。
编辑回应你的imapd.conf。
您使用静态映射到本地用户。 您可能想要将NFSv4身份映射到LDAP用户,这可能应该由nsswitch选项发生,但显然不是。 您可以尝试通过增加NFS服务器上的idmapd的详细程度来查看发生的情况。
或者configurationidmapd来直接查询您的LDAP服务器。 确切的语法可能取决于您使用的版本,但手册页显示了以下内容:
[General] Verbosity = 0 Domain = domain.org Local-Realms = DOMAIN.ORG,MY.DOMAIN.ORG,YOUR.DOMAIN.ORG [Mapping] Nobody-User = nfsnobody Nobody-Group = nfsnobody [Translation] Method = umich_ldap,nsswitch GSS-Methods = umich_ldap,static [Static] [email protected] = johnny [UMICH_SCHEMA] LDAP_server = ldap.domain.org LDAP_base = dc=org,dc=domain