在 NFS 挂载中 `rm` 文件时出现“权限被拒绝”,即使使用 sudo

在 NFS 挂载中 `rm` 文件时出现“权限被拒绝”,即使使用 sudo

语境:

  • 存储是 Kubernetes 持久卷,由 TrueNAS NAS 提供并通过 NFS 访问(使用 k8s accessMode ReadWriteMany
  • 我已经检查了 TrueNAS 数据集的权限,并确认已为用户、组和其他设置了 RWX(承认这不是最安全的,但它是家庭网络上的敏感数据 - 我想“做对”,但这不是优先事项)
  • 调试 pod(如下所述)正在使用ubuntu图像
  • 调试 pod 上没有/var/log/audit/audit.log文件,因此我认为 SELinux 没有参与(不过,从该声明的措辞来看,您可能可以正确推断出我不是 SELinux 专家)

我在已安装的 NFS 驱动器上发现了一个不必要的文件,应该删除。我启动了一个新的 pod 并将 PVC 挂载到它上面,但是当我尝试访问rm该文件时 - 即使是我使用时sudo- 我也被拒绝了权限。我还注意到该文件的所有权不寻常 ( nobody) 并尝试更改它以防这是原因,这也是被禁止的:

$ ls -al
...
-rwxr-xr-x   1 nobody root    1016756 Nov 26 01:21  DELETEME.txt
$ rm DELETEME.txt
rm: cannot remove 'DELETEME.txt': Permission denied
$ sudo rm DELETEME.txt
rm: cannot remove 'DELETEME.txt': Permission denied
$ sudo chown root:root DELETEME.txt
chown: changing ownership of 'DELETEME.txt': Operation not permitted

如果这是由于 Kubernetes 的某些方面造成的,我还尝试直接将 NFS 共享(使用-o rw)安装到(非 k8s-pod)机器并执行相同的命令,得到相同的结果。

什么可以阻止root删除或修改此文件?

编辑 1 - AFAICT,NFS 共享是使用777TrueNas 的权限导出的:

TrueNAS UI 的屏幕截图,显示 777 个权限

/etc/exportsTrueNAS 盒子上的内容如下:

# cat /etc/exports
V4: / -sec=sys
/mnt/low-resiliency-with-read-cache/ombi-data -mapall="k8s-user":"k8s-user"
/mnt/high-resiliency/k8s/nfs/vols/pvc-cd6d0f5d-a7d0-47a9-8371-29ab9ca27764 -maproot="root":"wheel"
/mnt/high-resiliency/manual-nfs
/mnt/high-resiliency/k8s/nfs/vols/pvc-a485ee75-9413-4b26-abdd-e5c3c23ef7ba -maproot="root":"wheel"

答案1

不知道 TrueNAS 的网络界面是做什么的,但我可以告诉你你/etc/exports所说的内容,如果所讨论的导出确实如此/mnt/low-resiliency-with-read-cache/ombi-data(考虑到其他名称,我有点怀疑):

-mapall="k8s-user":"k8s-user"`

这意味着全部远程用户,, 不是无论如何,都映射到k8s-用户。所以你可以忘记它sudo,它不会做任何事情。

删除文件并不是修改文件,而是修改目录。不幸的是,你的问题没有提供所有信息来给出 100% 的答案。但我敢打赌k8s-用户对包含此文件的目录也没有写权限。

然后还有一种可能性是访问控制列表正在使用。它们的作用超出了传统 Linux/UNIX 文件模式的作用。它们甚至可能影响其他导出,这些导出已经-maproot=root:wheel……

相关内容