我在本地网络中的多台 Debian 10 机器之间使用 nfs,具有相同的基本设置,并且它们都按预期工作。
我使用 autofs 作为 root 来挂载和卸载每台计算机上的 nfs 共享,并且在各处都使用相同的基本设置。每台客户端计算机上的用户都可以访问已安装的共享,因为它们属于nobody:nogroup
.
到目前为止,我一直在客户端计算机上从服务器计算机安装共享,没有任何问题。所以两台独立的机器。
我现在尝试通过在同一台计算机上使用 autofs 来安装从计算机提供的共享。所以服务器和客户端在同一台机器上。
autofs 挂载共享没有问题,非 root 用户可以毫无问题地列出文件夹内容和查看文件,但是当非 root 用户尝试写入共享时,他们会收到“权限被拒绝”:
$ touch test.file
touch: cannot touch 'test.file': Permission denied
$ echo "content" > test.file
bash: test.file: Permission denied
无论我在环回上使用 127.0.0.1 还是在以太网或 WiFi 接口上使用 192.168.xy 来访问共享,都会发生这种情况。其他机器使用 autofs 使用相同的设置挂载这些相同的共享,不会出现问题,而该机器同样使用 autofs 使用相同的设置再次挂载来自其他机器的共享,不会出现问题。
这些是 nfs 服务器设置:
$ sudo exportfs -v
/exports/share 127.0.0.1/32(rw,wdelay,root_squash,all_squash,sec=sys,rw,secure,root_squash,all_squash)
/exports/share 192.168.0.0/16(rw,wdelay,root_squash,all_squash,sec=sys,rw,secure,root_squash,all_squash)
这些是 autofs 设置,通过另一个文件中的主映射加载:
$ cat /etc/auto.shares
share_loopback -fstype=nfs4,rw,retry=0,hard,noac,noexec,proto=tcp 127.0.0.1:/exports/share
share_network -fstype=nfs4,rw,retry=0,hard,noac,noexec,proto=tcp 192.168.x.y:/exports/share
当用户使用相同的基本设置在同一台计算机上手动安装相同的 nfs 共享时,一切正常,没有权限问题。
$ sudo mount -t nfs4 -o rw,hard,noac,noexec,proto=tcp 127.0.0.1:/exports/share /media/share_loopback
$ sudo mount -t nfs4 -o rw,hard,noac,noexec,proto=tcp 192.168.x.y:/exports/share /media/share_network
看起来 autofs 在引擎盖下所做的事情与我手动安装时不同。
那么是什么导致通过 autofs 挂载报告“权限被拒绝”,我怎样才能让它工作呢?