NFSv3 + ACL:客户端上的掩码已消失

NFSv3 + ACL:客户端上的掩码已消失

我正在用户组之间共享一个 NFS 文件夹。客户端上的默认 umask 是 0700,这是一个问题,因为其他用户无法读取/写入新创建的文件。

所以我使用 ACL 强制 umask 0770在共享文件夹上,这在服务器上运行正常,但在客户端上却不行。

服务器 # getfacl /export/proyectos
getfacl:删除绝对路径名称中的“/”
# 文件:export/proyectos
# 所有者:root
# 组:root
用户::rwx
组::rwx
其他::rx
默认值:用户::rwx
默认:组::rwx
默认值:掩码::rwx
默认:其他::rx

服务器 # getfacl /export/proyectos/innovacion
getfacl:删除绝对路径名称中的“/”
# 文件:export/proyectos/innovacion
# 所有者:root
# 小组:proyecto-innovacion
# 标志:ss-
用户::rwx
组::rwx
掩码::rwx
其他:: - -
默认值:用户::rwx
默认:组::rwx
默认值:掩码::rwx
默认:其他::---

mask如您所见,正在应用默认 ACL(以及第二个目录上的特定 ACL) 。

我在客户端上安装了整个共享:

172.16.54.56:/export/proyectos on /proyectos 类型 nfs (rw,noatime,rsize=131072,wsize=131072,acregmin=10,acl,nfsvers=3,addr=172.16.54.56)

但是maskdefault:maskACL 已经消失了。

客户端 $ getfacl /proyectos/
getfacl:删除绝对路径名称中的“/”
# 文件:proyectos/
# 所有者:root
# 组:root
用户::rwx
组::rwx
其他::rx
默认值:用户::rwx
默认:组::rwx
默认:其他::rx

客户端 $ getfacl /proyectos/innovacion
getfacl:删除绝对路径名称中的“/”
# 文件:proyectos/innovacion
# 所有者:root
# 小组:proyecto-innovacion
# 标志:ss-
用户::rwx
组::rwx
其他:: - -
默认值:用户::rwx
默认:组::rwx
默认:其他::---

它缺少default:maskmaskACL,这是我设置的唯一 ACL。因此,建议的强制执行 umask 的解决方案对我来说不起作用。为什么会发生这种情况?

答案1

似乎,即使像getfaclls这样的实用程序显示正在应用 ACL,ACL 掩码也无法在 NFS 上按预期工作。某些文件/目录操作子集的工作方式就像已应用掩码一样,而其他则不是。

因此,即使您可以访问这些文件,通过 SFTP 或 Samba 提供文件夹服务也会导致奇怪的权限或根本没有权限。

我现在正在使用此 ACL,以确保所有文件都具有正确的权限。与预期相反,默认情况下不会将执行位应用于新文件,只有用户这样做时才会这样做。

ACL:

setfacl -d --set u::rwx,g::rwx,o::--- /export/proyectos

编辑:但是,对于通过 cp 或 nautilus 复制的文件,这种方法并不奏效。即使存在 ACL,它们也会应用用户 umask,因此这种方法不起作用。

相关内容