mirror of
https://github.com/samba-team/samba.git
synced 2025-01-11 05:18:09 +03:00
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>
This commit is contained in:
parent
13b4f913b0
commit
c1a37b4f31
@ -112,7 +112,10 @@ static NTSTATUS zfs_get_nt_acl_common(struct connection_struct *conn,
|
||||
|
||||
special = acebuf[i].a_flags & (ACE_OWNER|ACE_GROUP|ACE_EVERYONE);
|
||||
|
||||
if (is_dir && (aceprop.aceMask & SMB_ACE4_ADD_FILE)) {
|
||||
if (is_dir &&
|
||||
(aceprop.aceMask & SMB_ACE4_ADD_FILE) &&
|
||||
(special != 0))
|
||||
{
|
||||
aceprop.aceMask |= SMB_ACE4_DELETE_CHILD;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user