--- smbd/posix_acls.c 2006-11-14 06:42:12.000000000 -0800 +++ smbd/posix_acls.c 2007-02-01 11:21:38.000000000 -0800 @@ -692,7 +692,7 @@ curr_ace_next = curr_ace->next; /* Save the link in case of delete. */ - if (sid_equal(&curr_ace->trustee, &curr_ace_outer->trustee) && + if ( (sid_equal(&curr_ace->trustee, &curr_ace_outer->trustee) || (curr_ace->unix_ug.uid == curr_ace_outer->unix_ug.uid)) && (curr_ace->attr == curr_ace_outer->attr)) { if( DEBUGLVL( 10 )) { @@ -731,8 +731,7 @@ * Subtract ACE's with different entries. Due to the ordering constraints * we've put on the ACL, we know the deny must be the first one. */ - - if (sid_equal(&curr_ace->trustee, &curr_ace_outer->trustee) && +if ( (sid_equal(&curr_ace->trustee, &curr_ace_outer->trustee) || (curr_ace->unix_ug.uid == curr_ace_outer->unix_ug.uid)) && (curr_ace_outer->attr == DENY_ACE) && (curr_ace->attr == ALLOW_ACE)) { if( DEBUGLVL( 10 )) {