reject ACLs with DESC_DACL_PROTECTED on GPFS
authorChristian Ambach <christian.ambach@de.ibm.com>
Thu, 9 Jul 2009 12:45:23 +0000 (14:45 +0200)
committerVolker Lendecke <vl@samba.org>
Tue, 14 Jul 2009 07:21:26 +0000 (09:21 +0200)
as GPFS does not support the ACE4_FLAG_NO_PROPAGATE NFSv4 flag (which would be the mapping for the DESC_DACL_PROTECTED flag), the status of this flag is currently silently ignored by Samba. That means that if you deselect the "Allow inheritable permissions..." checkbox in Windows' ACL dialog and then apply the ACL, the flag will be back immediately.

To make sure that automatic migration with e.g. robocopy does not lead to ACLs silently (and unintentionally) changed, this patch adds an explicit check for this flag and if set, it will return NT_STATUS_NOT_SUPPORTED so errors are shown up on the Windows side and the Administrator is aware of the ACLs not being settable like intended

Signed-off-by: Christian Ambach <christian.ambach@de.ibm.com>
source3/modules/vfs_gpfs.c

index 47858cb3527d67da3cf35eebd3ea5794739e5182..ffa8db00b3fa2eb6e546dfcc20fb87b528ad0069 100644 (file)
@@ -445,6 +445,11 @@ static NTSTATUS gpfsacl_set_nt_acl_internal(files_struct *fsp, uint32 security_i
 
        if (acl->acl_version&GPFS_ACL_VERSION_NFS4)
        {
+               if ((psd->type&SEC_DESC_DACL_PROTECTED)) {
+                       DEBUG(2, ("Rejecting unsupported ACL with DACL_PROTECTED bit set\n"));
+                       return NT_STATUS_NOT_SUPPORTED;
+               }
+
                result = smb_set_nt_acl_nfs4(
                        fsp, security_info_sent, psd,
                        gpfsacl_process_smbacl);