我有两台 RHEL 6 服务器,一台是 NFS 服务器(我们将其称为nfs-server
,假设它的 IP 是10.1.1.1
),另一台是用于所有意图和目的的通用客户端(我们将其称为nfs-client
,假设它的 IP 是10.0.0.1
)。
nfs-server
和都nfs-client
连接到同一个集中式身份验证系统,因此对于给定用户,UID/GID 是相同的。
nfs-client
正在将 NFSv3 共享从nfs-server:/shared_folder/cache
挂载到/shared_folder/cache
。
/shared_folder
上的目录处于nfs-server
模式755
,所有者为root:root
,并且/shared_folder/cache
目录处于 模式2775
,所有者为cache:cache
(UID=20014, GID=20004)。
我有一组用户,他们都是cache
LDAP 中组的成员,但他们无法在/shared_folder/cache
上的目录本身中创建或删除任何内容nfs-client
。但是:
- 如果文件已存在
/shared_folder/cache
且具有正确的权限(可由组写入cache
),则用户可以修改该文件,但不能删除它(例如,如果/shared_folder/cache/testfile
存在且可由组写入cache
,则用户可以修改文件的内容,但不能删除它) /shared_folder/cache
如果 中已经存在具有正确权限(模式2775
,所有者)的子目录cache:cache
,则用户可以正常修改目录(例如,如果/shared_folder/cache/testdir/
存在于 模式2775
下 且由cache
组拥有,则用户可以添加/修改/删除 中的文件和目录testdir
,但不能删除testdir
自身)- 如果我以 上的用户身份登录
nfs-server
,我就能像往常一样在 中创建/修改/删除文件和目录/shared_folder/cache
我该如何修复此 NFS 挂载?诊断信息位于水平线下方。
id user1
和的输出nfs-server
均nfs-client
显示:
uid=8173(<username>) gid=8173(<username>) groups=20004(cache)
nfs-server
中配置了以下导出/etc/exports
:
"/shared_folder/cache" <nfs-client-IP>(rw)
exportfs -v
on的输出nfs-server
显示:
/shared_folder/cache
<nfs-client-IP>(rw,wdelay,root_squash,no_subtree_check,sec=sys,rw,root_squash,no_all_squash)
答案1
删除文件需要目录的写权限。
您已经正确设置了rw
挂载选项,但是 NFS 端似乎出现了问题(因为您可以通过登录服务器来删除文件)。
我会做的一些事情:
检查默认的 umask。
lsattr
使用和检查文件的权限getfacl
。确保在您尝试删除文件时没有其他人正在访问该文件(
lsof
)。如果 SELinux 处于强制模式,请检查审计日志(最好使用
audit2why
)。尝试添加同步挂载选项。
作为最后的解决方法,删除并重新创建服务器上的用户和组,然后重新启动 NFS 服务器。