我与 nfs 做了一些共享 这是 /etc/exports 文件(我知道 no_root_squash 很危险,但只是暂时的,用于测试)
/srv/nfs4 10.3.0.0/24(ro,no_subtree_check,fsid=0,sec=krb5p:sys) 192.168.0.0/24(ro,no_subtree_check,fsid=0,sec=krb5p:sys)
/srv/nfs4/kernels 10.3.0.0/24(rw,no_subtree_check,async,no_root_squash,nohide,sec=krb5p:sys) 192.168.0.0/24(rw,no_subtree_check,async,no_root_squash,nohide,sec=krb5p:sys)
如果我使用 sys 选项挂载目录,则 posix acl 会受到尊重,如果我以 root 身份创建文件,则以 root 身份报告权限(这是我想要的)。
mount -vvv -o sec=sys myserver:/kernels /mnt/
mount.nfs: timeout set for Tue Dec 28 07:18:41 2021
mount.nfs: trying text-based options 'sec=sys,proto=tcp,retrans=2,retry=1,acl,ac,rsize=32768,wsize=32768,bsize=32768,port=2049,vers=4,addr=10.3.0.1,clientaddr=10.3.0.1'
cd /mnt
mkdir 44944
root@server:/mnt$ ls -lhd *
drwxr-xr-x 2 nobody nogroup 4,0K 28 dic 06.52 33/
drwxr-xr-x 2 root root 4,0K 28 dic 07.10 449/
drwxr-xr-x 2 nobody nogroup 4,0K 28 dic 07.17 4494/
drwxr-xr-x 2 root root 4,0K 28 dic 07.18 44944/
问题是如果我使用 sec=krb5p 挂载目录,它会强制挂载为nobody:nogroup(原文如此!),我尝试给目录 777 权限,然后以 kerberized 用户身份输入(我先做了 kinit)然后我创建一个目录..它将权限报告为nobody:nogroup。
mount -vvv -o sec=krb5p myserver:/kernels /mnt/
mount.nfs: timeout set for Tue Dec 28 07:21:45 2021
mount.nfs: trying text-based options 'sec=krb5p,proto=tcp,retrans=2,retry=1,acl,ac,rsize=32768,wsize=32768,bsize=32768,port=2049,vers=4,addr=10.3.0.1,clientaddr=10.3.0.1'
mkdir 449444
root@myserver:/mnt$ ls -lhd *
drwxr-xr-x 2 nobody nogroup 4,0K 28 dic 06.52 33/
drwxr-xr-x 2 root root 4,0K 28 dic 07.10 449/
drwxr-xr-x 2 nobody nogroup 4,0K 28 dic 07.17 4494/
drwxr-xr-x 2 root root 4,0K 28 dic 07.18 44944/
drwxr-xr-x 2 nobody nogroup 4,0K 28 dic 07.21 449444/
如您所见,该目录被创建为nobody nogroup(使用chmod 777,否则正确授予权限被拒绝)
我必须检查什么?服务器和客户端都是 Debian 11
找到解决方案。我在一个多网络服务器上,它通过一个接口连接到一个网络,另一个接口连接到另一个网络。在我为每个网络使用两个“不同”主机名之前(网络 A 将我的服务器解析为 virt.domain.example,网络 B 将服务器解析为 router.domain.example)我已经使用相同的主机名(但不同当然域)每个网络,现在在守护进程重新启动后可以正常工作。