我从服务器导出了 NFS 共享并从客户端挂载了它。当我尝试访问它时,出现了权限被拒绝的错误,不知道为什么。将导出设置为全局可写,在那里创建了一个文件,结果发现客户端使用与我预期不同的用户访问它。
我的出口:
/export fd48:2b50:6a95:a6db::4(ro,no_subtree_check,fsid=0,all_squash)
/export/backup-fs fd48:2b50:6a95:a6db::4(rw,no_subtree_check,root_squash,anonuid=34,anongid=34)
(注意:出于隐私原因,公共 IP 地址已更改为私有 IP 地址。)
此处的目的是执行root_squash
,但客户端的根用户应被压缩为本地 UID 34(备份用户);这是 的目的anonuid
。anongid
因此,如果导出归 UID/GID 34 所有,则客户端的根用户应被视为其所有者。然而,当我在共享上创建文件时,它归nobody/nogroup
。为什么?两个系统之间的所有内容都匹配:两者都有 UID/GID 34 并且都名为backup
。
另外,我必须将其更改/export
为rw
,这对我来说没有意义,因为我希望导出根目录是只读的,而只有子目录备份文件可写。
服务器系统:
Ubuntu 20.04.3 LTS (GNU/Linux 5.4.0-81-generic x86_64)
客户端上的安装样子如下:
my-nfs-server:/backup-fs on /var/backups/fs/data type nfs4 (rw,relatime,vers=4.2,rsize=65536,wsize=65536,namlen=255,hard,proto=tcp6,timeo=600,retrans=2,sec=sys,clientaddr=fd48:2b50:6a95:a6db::4,local_lock=none,addr=fdc8:d5f9:cbbf:b206::2001)
让我特别困惑的是,我在另一台 NFS 服务器上有完全相同的配置,我用完全相同的客户端安装它,它按预期工作。我找不到这两个配置之间的任何区别,尽管我在另一个系统上有一个较旧的 Ubuntu 和相关内核版本。