我想要做什么
我有一个 freeIPA 域,有几个客户端和一个 Synology NAS(也注册了 freeIPA)。
我在 NAS 上创建了一个共享文件夹,支持 NFSv4 + krb5。从客户端,我获得了 LDAP 用户的票证[email protected]
并挂载了这个文件夹。
最初,在此文件夹中创建的文件将归nobody
用户所有。
我终于让它工作了,通过/etc/idmapd.conf
将 NAS 更改为
- 正确设置域
[email protected]
与本地用户之间有静态映射
问题
我确实了解idmapd
一般前 NFS 的作用。
然而,在这种情况下:
- 为什么我需要显式映射?自己搞不定吗?
- 为什么我需要一个映射?NAS 也在同一个 freeIPA 域中,是一个 LDAP 客户端并具有正确的 kerberos 主体。它完全知道谁
[email protected]
是谁,为什么不能只使用该 uid 来获取该文件夹的文件所有权,而不是本地的 uid用户?我可以避免创建本地用户吗?
我现在的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
,如果可能的话,我什至不需要user1
在 NAS 上创建本地用户。
简而言之,NFSv4 协议依赖于在服务器和客户端之间共享的用户名,而不是 UID/GID编号(在早期版本中使用)和 UID <==> 用户名映射实际上可以不同在客户端和服务器上。
作为 NFSv4 协议的一部分,服务器都需要将公共安全上下文/权限、所有者和所有者组映射到对本地文件系统操作有意义的东西。该映射由 IDMAPD 在 Linux 系统上完成。
在 Linux 系统上,许多本地文件系统操作是基于 UID/GID 的,但这些操作需要先转换为共享的 NFSv4 上下文,然后才能传输到 NFS 服务器。
也许RFC 3530可以更好地解释它:
编辑以响应您的 imapd.conf。
您使用到本地用户的静态映射。您可能希望将 NFSv4 身份映射到 LDAP 用户,这可能应该通过
nsswitch
选项发生,但显然不是。您可以尝试通过增加 NFS 服务器上 idmapd 的详细程度来查看发生了什么。或者将 idmapd 配置为直接查询您的 LDAP 服务器。确切的语法可能取决于您使用的版本,但手册页显示了以下内容: