vfs_zfsacl: only grant DELETE_CHILD if ACL tag is special
authorAndrew Walker <awalker@ixsystems.com>
Thu, 24 Sep 2020 20:04:12 +0000 (16:04 -0400)
committerJeremy Allison <jra@samba.org>
Thu, 15 Oct 2020 19:07:40 +0000 (19:07 +0000)
commitc1a37b4f31d5252ce074d41f69e526aa84b0d3b3
tree97e8fe424148db74bc78d0faa3791ff30d334a07
parent13b4f913b06457d8e1f7cf71c85722bbecabd990
vfs_zfsacl: only grant DELETE_CHILD if ACL tag is special

When ZFS aclmode is set to "passthrough" chmod(2)/fchmod(2) will result
in special entries being modified in a way such that delete, delete_child,
write_named_attr, write_attribute are stripped from the returned ACL entry,
and the kernel / ZFS treats this as having rights equivalent to the desired
POSIX mode. Historically, samba has added delete_child to the NFSv4 ACL, but
this is only really called for in the case of special entries in this
particular circumstance.

Alter circumstances in which delete_child is granted so that it only
is added to special entries. This preserves the intend post-chmod behavior,
but avoids unnecessarily increasing permissions in cases where it's not
intended. Further modification of this behavior may be required so that
we grant a general read or general write permissions set in case of
POSIX read / POSIX write on special entries.

BUG: https://bugzilla.samba.org/show_bug.cgi?id=14471

Signed-off-by: Andrew Walker <awalker@ixsystems.com>
Reviewed-by: Ralph Boehme <slow@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
source3/modules/vfs_zfsacl.c