如何获得Synology NAS的NFS共享的读/写权限?

Modified on: Sun, 10 Jun 2018 03:56:23 +0800

我只能读取已挂载的NFS共享。

在NAS上设置“无壁球映射”时,Ubuntu常规用户在尝试Permission denied进入共享时获取cd,并且只能通过须藤。
使用壁球'将所有用户映射到管理'设置,客户端常规用户可以sudo进入并且只具有对共享的读访问权限。使用cd不允许写入。


Synology NAS:
sudo
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

Ubuntu客户端:
/volume1/Files 10.1.1.2(rw,async,no_wdelay,all_squash,insecure_locks,sec=sys,anonuid=1024,anongid=100)
$ 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,但即使使用sudo vi /mnt/nfs/Files/Data/test.file也无法将更改写入文件。 sudo命令的vi错误消息是:
:w!

作者:,marsilea

最佳答案

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

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

为了至少防止root权限升级,默认情况下会使用root_squash选项导出NFS共享,该选项将映射来自root (uid=0, gid=0)anonuidanongid。可以使用no_root_squash覆盖此行为,授予对导出的root访问权限。

在这里,我们看到另一个缺点。要正常运行,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是实现这一目标的最简单方法。

作者:Nephente

相关问答

添加新评论