NFS 用户 ID 映射仅适用于某些 uid

NFS 用户 ID 映射仅适用于某些 uid

我尝试在 Synology NAS 上设置 NFS 访问。由于历史原因,我的客户端和服务器上的 uid 不匹配。我了解到 NFSv4 可以让我优雅地解决这个问题,但代价是了解如何使用 idmap(尽管它似乎不起作用在 Synology NAS 上效果很好:使用 ID 映射安装 Synology nfsv4 导出)。

无论如何,我对 suprjami 提出的解决方案感到很满意Synology NAS 上的 NFS 用户 ID 映射(我发现网络上还有几个地方描述了同样的技术)该技术包括使用 all_squash 选项将客户端上的任何用户映射到服务器上的给定用户。NAS 的图形用户界面提供的唯一可能性是映射到名为 admin 且 uid=1024 的用户。

这很好用:

NAS-192.168.0.2 # cat /etc/exports
/volume1/photo  192.168.0.10(rw,async,no_wdelay,all_squash,insecure_locks,sec=sys,anonuid=1024,anongid=100)

在我的客户端笔记本电脑上(IP 为 192.168.0.10):

laptop-192.168.0.10 # mount 192.168.0.2:/volume1/photo /mnt/nas
laptop-192.168.0.10 # ls -l /mnt
drwxrwxrwx  5 root root 4096 juin  22 17:08 nas

我可以列出、读取和写入 /mnt/nas 中的文件,并且所有内容都归功于用户 1024,正如预期的那样。

现在,我的问题是:我想映射到 NAS 上的本地用户而不是管理员,该用户具有用户 ID 1026,可以在 NAS 上检查:

NAS-192.168.0.2 # id infisxc
uid=1026(infisxc) gid=100(users) groups=100(users)

因此,我只需在服务器上的 /etc/exports 上更改 anonuid 值:

NAS-192.168.0.2 # cat /etc/exports
/volume1/photo  192.168.0.10(rw,async,no_wdelay,all_squash,insecure_locks,sec=sys,anonuid=1026,anongid=100)
NAS-192.168.0.2 # exportfs -ra

现在,在客户端,挂载仍然成功,但是根本没有权限:

laptop-192.168.0.10 # mount 192.168.0.2:/volume1/photo /mnt/nas
laptop-192.168.0.10 # ls -l /mnt
d---------  5 root root 4096 juin  22 17:08 nas

毫不奇怪的是,我无法列出该文件夹的内容。

我觉得我做的还不错,但我可能忘记了一些东西。欢迎任何建议。

为了完整起见,我有一台 Synology 的 DS414j NAS,配备 DSM 6.1.2-15132。

相关内容