如何获取 Synology NAS 的 NFS 共享的读/写访问权限?

如何获取 Synology NAS 的 NFS 共享的读/写访问权限?

我仅具有已挂载的 NFS 共享的读取权限。

如果在 NAS 上设置了“无压缩映射”,Ubuntu 普通用户Permission denied在尝试cd进入共享时将获得访问权限,并且只能通过使用 获得读取访问权限sudo
使用压缩“将所有用户映射到管理员”设置,客户端普通用户可以cd进入共享并且只能对共享具有读取访问权限。使用sudo不允许写入。

Synology NAS:

DS214> id username
uid=1026(username) gid=100(users) groups=100(users),101(administration)

无挤压(无映射)

DS214> cat /etc/exports
/volume1/Files 10.1.1.2(rw,async,no_wdelay,no_root_squash,insecure_locks,sec=sys,anonuid=1025,anongid=100) `

全部压缩(将所有用户映射到管理员)

DS214> cat /etc/exports
/volume1/Files 10.1.1.2(rw,async,no_wdelay,all_squash,insecure_locks,sec=sys,anonuid=1024,anongid=100)`

Ubuntu 客户端:

$ cat /etc/fstab
10.1.1.214:/volume1/Files /mnt/nfs/Files nfs rw,user,auto 0 0

$ id username
uid=1000 gid=1000(username) groups=1000(username), <etc>

$ ls -n /mnt/nfs
drwxrwxrwx  9 0 0 4096 Sep 25 01:28 Files

$ ls -n /mnt/nfs/Files
drwxr-xr-x 11 1026 100 4096 Sep 24 22:05 Data

(我最初在错误中发布了使用sudo启用的写访问)我可以使用 打开已安装的 NFS 共享中的文件,sudo vi /mnt/nfs/Files/Data/test.file但即使使用也无法将更改写入文件sudo。 vi 命令的错误消息:w!是:

"test.file" E212: Can't open file for writing`

答案1

NFSv2/3 仅根据 UID 和 GID 处理权限。服务器上的文件权限与客户端上的用户和组 ID 进行匹配。这就是为什么 NFSv<4 在用户对客户端计算机具有 root 访问权限的环境中设计不安全的原因;在这种情况下,UID 欺骗是微不足道的。

请注意,NFSv4 通过 Kerberos5 提供客户端和用户身份验证。如果需要使用用户名和密码进行身份验证,即使在纯 Linux 环境中,使用 Samba (SMB/CIFS) 也比设置 Kerberos 更容易。

为了至少防止 root 权限升级,默认情况下使用选项 导出 NFS 共享root_squash,这会将所有来自 的客户端请求映射到和root (uid=0, gid=0)。可以使用 覆盖此行为,授予 root 对导出的访问权限。anonuidanongidno_root_squash

这里,我们看到了另一个缺点。要正常运行,NFS 基本上要求您在所有机器上具有相同的 UID/GID。您要访问的文件属于1026并具有权限 755。您在客户端上的用户具有uid=1000。GID 也不匹配,因此您只获得世界权限。因此没有写访问权限。

为了解决这个问题,你可以做以下几件事之一:

  • 在 NAS 上,将文件的所有者更改为1000。您可能需要创建该特定帐户。我无法判断这会如何影响其他服务。

  • 将本地用户的 UID 更改为1026

  • 由于您是服务器上唯一可以访问文件的人,因此您可以让服务器假装所有请求都来自正确的 UID。为此,NFS 提供了选项all_squash。它告诉服务器将所有请求映射到由 指定的匿名用户anonuid,anongid

    将选项添加all_squash,anonuid=1026,anongid=100到中的导出/etc/exports

要小心不过,因为这将使任何人有效地挂载导出这些文件的所有者!

如果您与他人及其客户共享网络,而您并不完全信任他们不会对您的文件进行破坏,那么您确实应该研究一种提供身份验证的文件共享方法。在我看来,Samba 是实现此目的的最简单方法。

答案2

执行showmount -e 10.1.1.214以查看导出选项。Permission denied错误来自 NFS 服务器本身。尝试将选项从 更改rw,user,autodefaults

相关内容