ntvfs: inherit generic
authorStefan Metzmacher <metze@samba.org>
Sat, 1 Dec 2012 16:11:10 +0000 (17:11 +0100)
committerStefan Metzmacher <metze@samba.org>
Mon, 18 Feb 2019 10:31:19 +0000 (11:31 +0100)
source4/ntvfs/posix/pvfs_acl.c

index d284585f260a2d03d50fd0c49c96ad7aaf937419..71027b6a9eaa2a2c48cbae798a0b3022b6cc49e0 100644 (file)
@@ -134,6 +134,9 @@ static void pvfs_translate_generic_bits(struct security_acl *acl)
 
        for (i=0;i<acl->num_aces;i++) {
                struct security_ace *ace = &acl->aces[i];
+               if (ace->flags & SEC_ACE_FLAG_INHERIT_ONLY) {
+                       continue;
+               }
                ace->access_mask = pvfs_translate_mask(ace->access_mask);
        }
 }
@@ -877,6 +880,11 @@ static NTSTATUS pvfs_acl_inherit_aces(struct pvfs_state *pvfs,
                        }
                }
 
+               if (orig_flags & SEC_ACE_FLAG_INHERIT_ONLY) {
+                       creator = &ace.trustee;
+                       new_id = &ace.trustee;
+               }
+
                /* the CREATOR sids are special when inherited */
                if (dom_sid_equal(&ace.trustee, pvfs->sid_cache.creator_owner)) {
                        creator = pvfs->sid_cache.creator_owner;
@@ -915,6 +923,9 @@ static NTSTATUS pvfs_acl_inherit_aces(struct pvfs_state *pvfs,
                }
        }
 
+       pvfs_translate_generic_bits(sd->dacl);
+       sd->type |= SEC_DESC_DACL_PRESENT;
+
        return NT_STATUS_OK;
 }