我正在用户组之间共享一个 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)
但是mask
和default:mask
ACL 已经消失了。
客户端 $ 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:mask
和mask
ACL,这是我设置的唯一 ACL。因此,建议的强制执行 umask 的解决方案对我来说不起作用。为什么会发生这种情况?
答案1
似乎,即使像getfacl
和ls
这样的实用程序显示正在应用 ACL,ACL 掩码也无法在 NFS 上按预期工作。某些文件/目录操作子集的工作方式就像已应用掩码一样,而其他则不是。
因此,即使您可以访问这些文件,通过 SFTP 或 Samba 提供文件夹服务也会导致奇怪的权限或根本没有权限。
我现在正在使用此 ACL,以确保所有文件都具有正确的权限。与预期相反,默认情况下不会将执行位应用于新文件,只有用户这样做时才会这样做。
ACL:
setfacl -d --set u::rwx,g::rwx,o::--- /export/proyectos
编辑:但是,对于通过 cp 或 nautilus 复制的文件,这种方法并不奏效。即使存在 ACL,它们也会应用用户 umask,因此这种方法不起作用。