如何获得 nfs 共享的用户权限?

Ayv*_*ing 6 nfs permissions mount nas

情况:我只是希望能够以非 root 用户身份从 Ubuntu 服务器访问 Synology NAS。

在 NAS 上,我在导出文件中有这个:

/Directory <client-ip>/255.255.255.0(rw,async,no_wdelay,no_root_squash,insecure_locks,sec=sys,anonuid=1003,anongid=1004)
Run Code Online (Sandbox Code Playgroud)

在 fstab 中的 Ubuntu 服务器上,我得到了这个:

<server-ip>:/Directory  /Mountpoint nfs noauto,user,rw 0 0
Run Code Online (Sandbox Code Playgroud)

现在我想允许 UserA,它用于一些自动进程来安装共享并写入它。

mount /Mountpoint
Run Code Online (Sandbox Code Playgroud)

以 UserA 身份挂载工作正常,但我什至无权读取目录中的内容。作为 root 用户,我这样做。列出 mountpoint 文件夹显示了这些权限:

drwxrwx--- 4 UserA root 4096 Sep 17 13:58 Mountpoint
Run Code Online (Sandbox Code Playgroud)

我试图将导出中的匿名 ID 设置为 UserA 的 ID,但这没有帮助。使 UserA 成为文件夹的所有者也无济于事。我错过了一件简单的事情吗?

另外:这需要是 nfs 共享,因为它将传输大量数据。

编辑:出于安全原因,我宁愿避免向“其他人”授予读写权限。

mur*_*uru 7

usera是用户A的主组(groups usera)。您可以使用以下方法找出 GID:id -g usera在客户端系统上,假设它是1256. 现在将您的用户添加到usera组中:

sudo adduser ayven usera
Run Code Online (Sandbox Code Playgroud)

现在,在服务器上,执行:

chown :1256 /Directory # Replace 1256 with the correct GID
chmod g+rwxs /Directory
Run Code Online (Sandbox Code Playgroud)

在客户端重新安装它:

sudo umount /Directory
sudo mount /Directory
Run Code Online (Sandbox Code Playgroud)

(您可能需要重新登录才能使新组生效。)

现在您和您usera都可以完全访问 NFS 共享。我用过这个setgid位,所以你可能需要启用它,我不记得了。将您希望有权访问此目录的任何用户添加到usera组中。