summaryrefslogtreecommitdiff
path: root/source3/modules
diff options
context:
space:
mode:
authorPaul B. Henson <henson@acm.org>2011-01-13 10:16:13 -0800
committerJeremy Allison <jra@samba.org>2011-01-13 20:02:31 +0100
commit99a74ff5e6a9f87ad7a650cb44e0f925f834b3a1 (patch)
tree28a4d0a53a09fa93dd9202b4abb95af17385e06e /source3/modules
parent961f503f0dd7a03696460b482da4fa7e08daa78d (diff)
downloadsamba-99a74ff5e6a9f87ad7a650cb44e0f925f834b3a1.tar.gz
samba-99a74ff5e6a9f87ad7a650cb44e0f925f834b3a1.tar.bz2
samba-99a74ff5e6a9f87ad7a650cb44e0f925f834b3a1.zip
Fix bug #7909 - map SYNCHRONIZE acl permission statically in zfs_acl vfs module.
Autobuild-User: Jeremy Allison <jra@samba.org> Autobuild-Date: Thu Jan 13 20:02:32 CET 2011 on sn-devel-104
Diffstat (limited to 'source3/modules')
-rw-r--r--source3/modules/nfs4_acls.c4
-rw-r--r--source3/modules/vfs_zfsacl.c3
2 files changed, 6 insertions, 1 deletions
diff --git a/source3/modules/nfs4_acls.c b/source3/modules/nfs4_acls.c
index 1913946144..e2f9fe3a81 100644
--- a/source3/modules/nfs4_acls.c
+++ b/source3/modules/nfs4_acls.c
@@ -280,7 +280,9 @@ static bool smbacl4_nfs42win(TALLOC_CTX *mem_ctx, SMB4ACL_T *theacl, /* in */
DEBUG(10, ("mapped ace flags: 0x%x => 0x%x\n",
ace->aceFlags, mapped_ace_flags));
- mask = ace->aceMask;
+ /* Windows clients expect SYNC on acls to
+ correctly allow rename. See bug #7909. */
+ mask = ace->aceMask | SMB_ACE4_SYNCHRONIZE;
init_sec_ace(&nt_ace_list[good_aces++], &sid,
ace->aceType, mask,
mapped_ace_flags);
diff --git a/source3/modules/vfs_zfsacl.c b/source3/modules/vfs_zfsacl.c
index 98c9bcf760..8a2c378e05 100644
--- a/source3/modules/vfs_zfsacl.c
+++ b/source3/modules/vfs_zfsacl.c
@@ -124,6 +124,9 @@ static bool zfs_process_smbacl(files_struct *fsp, SMB4ACL_T *smbacl)
acebuf[i].a_type = aceprop->aceType;
acebuf[i].a_flags = aceprop->aceFlags;
acebuf[i].a_access_mask = aceprop->aceMask;
+ /* SYNC on acls is a no-op on ZFS.
+ See bug #7909. */
+ acebuf[i].a_access_mask &= ~SMB_ACE4_SYNCHRONIZE;
acebuf[i].a_who = aceprop->who.id;
if(aceprop->flags & SMB_ACE4_ID_SPECIAL) {
switch(aceprop->who.special_id) {