我正在将目录结构从 UFS 文件系统迁移到 ZFS。在旧位置,我已将 POSIX ACL 设置为强制使用组写入权限创建结构中的所有新文件/目录 -
group::rwx
default:group::rwx
在新的 ZFS 文件系统上,我尝试使用设置了“file_inherit/dir_inherit”标志的 NFSv4 ACL 来复制此操作,但发现这些标志已被删除(或者在目录的情况下,被设置了“inherit_only”的 ACE 替换),因此组中的其他用户不在新目录中具有写权限。例如:
$ chmod A+group@:rwxp:fd:allow .
$ ls -Vd .
drwxrws---+ 6 user1 grp1 13 Nov 8 12:55 .
group@:rwxp----------:fd----:allow
owner@:--------------:------:deny
owner@:rwxp---A-W-Co-:------:allow
group@:--------------:------:deny
group@:rwxp----------:------:allow
everyone@:rwxp---A-W-Co-:------:deny
everyone@:------a-R-c--s:------:allow
$ mkdir test
$ ls -Vd test
drwxr-sr-x+ 2 user1 grp1 2 Dec 1 14:24 test
group@:rwxp----------:fdi---:allow
group@:--------------:------:allow
owner@:--------------:------:deny
owner@:rwxp---A-W-Co-:------:allow
group@:-w-p----------:------:deny
group@:r-x-----------:------:allow
everyone@:-w-p---A-W-Co-:------:deny
everyone@:r-x---a-R-c--s:------:allow
$ touch afile
$ ls -V afile
-rw-r--r--+ 1 user1 grp1 0 Dec 1 14:40 afile
group@:--------------:------:allow
owner@:--x-----------:------:deny
owner@:rw-p---A-W-Co-:------:allow
group@:-wxp----------:------:deny
group@:r-------------:------:allow
everyone@:-wxp---A-W-Co-:------:deny
everyone@:r-----a-R-c--s:------:allow
我可以通过将 umask 设置为 002 来解决这个问题,但我想知道是否存在纯 ACL 方式(因为当前安装的 FTP 和 SSH 版本不允许根据每个用户设置 umask)。
答案1
我使用类似下面的方法进行无密码 NAS 存储。我不太熟悉所有细粒度的权限,因此对于所有者/组权限来说可能有点过分,而对于所有人来说可能又不够,但下面就是我的设置:
setfacl -m owner@:full_set:fd:allow /zfs/raid1/storage
setfacl -m group@:full_set:fd:allow /zfs/raid1/storage
setfacl -m everyone@:rx:fd:allow /zfs/raid1/storage
它运行在 FreeBSD 上,因此 ZFS 的 NFSv4 ACL 内置于 setfacl 中。我认为它们也可以在某些操作系统上位于 nfs4_setfacl 和 chmod 中。我对 ACL 非常陌生,对 FreeBSD 也更陌生,所以这一切可能会让系统管理员哭泣。它还充当并将chmod 2774
新文件/目录的组设置为数据集的组。
编辑以澄清一点:/zfs/raid1
是实际的 ZFS 挂载,storage
是其中的数据集。