我已经使用 NFS 设置了服务器和客户端(均为 LinuxMint 21.3),以便客户端具有读写访问权限。但是,它成功读取但无法写入。我在这里和其他地方搜索了很多问题,但没有看到任何似乎明确提供解决方案的内容。我试过这个页这证实了我所做的一切。
设置如下:
服务器/etc/exports
设置为读/写:
/exports 192.168.0.0/28(rw,no_subtree_check)
客户端/etc/fstab
设置为在启动时挂载:
media:/exports /mnt/nfs/media-server nfs auto,noatime,defaults,x-gvfs-show 0 0
服务器导出的权限(此示例仅选择一个目录):
root@media:~# ls -al /exports/Software
total 16
drwxr-xr-x 4 root root 4096 Mar 28 11:56 .
drwxr-xr-x 8 root root 4096 Mar 28 11:55 ..
drwxr-xr-x 2 root root 4096 Mar 28 11:56 Linux
drwxr-xr-x 2 root root 4096 Mar 28 11:56 Windows
客户端挂载的权限:
root@brawn:~# ls -al /mnt/nfs/media-server/Software
total 16
drwxr-xr-x 4 root root 4096 Mar 28 11:56 .
drwxr-xr-x 8 root root 4096 Mar 28 11:55 ..
drwxr-xr-x 2 root root 4096 Mar 28 11:56 Linux
drwxr-xr-x 2 root root 4096 Mar 28 11:56 Windows
但是,从客户端复制到服务器(或从客户端在服务器上创建文件夹)的尝试失败。
尝试以我的用户身份进行复制(在两个系统上具有相同的 uid、gid)
:~$ cp /media/<user>/Storage/Software/Linux/zoom*.deb /mnt/nfs/media-server/Software/Linux
cp: cannot create regular file '/mnt/nfs/media-server/Software/Linux/zoom_amd64.deb': Permission denied
即使以 root 身份尝试也失败:
:~# cp /media/<user>/Storage/Software/Linux/zoom_amd64.deb /mnt/nfs/media-server/Software/Linux
cp: cannot create regular file '/mnt/nfs/media-server/Software/Linux/zoom_amd64.deb': Permission denied
更新
使用@vidarlo 的答案中提供的信息,我做了以下事情:
在服务器上:
sudo groupadd -g 1003 nfsshare
sudo usermod -a -G nfsshare <user>
cd /exports
sudo chgrp -R nfsshare /exports
sudo chmod -R 775 /exports
sudo exportfs -ar
在客户端上:
sudo groupadd -g 1003 nfsshare
sudo usermod -a -G nfsshare <user>
mount -a
我的用户现在可以完全访问导出的内容。
答案1
首先,作为用户,它失败,因为该文件夹归所有root
,并且只有root
写权限。
其次,由于 NFS默认root
不信任远程系统,因此它会失败。root
您有两个选择:
- 通过更改所有者和权限来授予用户访问权限
- 使用以下方式导出目录
no_root_squash
-选项赋予 root 完全权限。
后者是从安全角度来看这不是一个好主意- 至少在没有任何进一步操作的情况下不会,因为它将允许远程 root 在服务器上创建 suid 二进制文件...