我与 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 挂载目录,它会强制挂载为没人:nogroup(原文如此!),我尝试为该目录提供 777 权限,然后以 kerberized 用户身份输入(我首先执行 kinit)并创建dir..it 将权限报告为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
答案1
找到解决方案。我位于一台多网络服务器上,该服务器通过一个接口连接到一个网络,另一个接口连接到另一个网络。在每个网络使用两个“不同”主机名之前(网络 A 将我的服务器解析为 virt.domain.example,网络 B 将服务器解析为 router.domain.example),我已经完成了此更改,使用相同的主机名(但不同)当然是每个网络的域),现在在守护程序重新启动后可以完美运行。