Revert "Part 5 of bugfix for bug #7509 - smb_acl_to_posix: ACL is invalid for set...
authorJeremy Allison <jra@samba.org>
Tue, 6 Sep 2011 21:08:01 +0000 (14:08 -0700)
committerJeremy Allison <jra@samba.org>
Wed, 7 Sep 2011 01:50:21 +0000 (03:50 +0200)
This reverts commit 17f6e0272370f764d4a0053c8e74f20b0444c721.

Using the existing default permissions for group access is incorrect
when no such permissions are given in the incoming ACL.

Autobuild-User: Jeremy Allison <jra@samba.org>
Autobuild-Date: Wed Sep  7 03:50:21 CEST 2011 on sn-devel-104

source3/smbd/posix_acls.c

index 0d0b5da630dee3f5fef8b5a8b9b75c430de2a879..0be7bec47fd536d053e4f3debd4073b1f739feb6 100644 (file)
@@ -1457,29 +1457,12 @@ static bool ensure_canon_entry_valid(connection_struct *conn, canon_ace **pp_ace
                pace->unix_ug.uid = pst->st_ex_gid;
                pace->trustee = *pfile_grp_sid;
                pace->attr = ALLOW_ACE;
-               /* Start with existing permissions, principle of least
-                  surprises for the user. */
-               pace->perms = pst->st_ex_mode;
-
                if (setting_acl) {
-                       /* See if there's a matching group entry.
-                          If so, OR in the permissions from that entry. */
-
-                       canon_ace *pace_iter;
-
-                       for (pace_iter = *pp_ace; pace_iter; pace_iter = pace_iter->next) {
-                               if (pace_iter->type == SMB_ACL_GROUP &&
-                                                       pace_iter->unix_ug.gid == pace->unix_ug.gid) {
-                                       pace->perms |= pace_iter->perms;
-                                       break;
-                               }
-                       }
-
                        /* If we only got an "everyone" perm, just use that. */
-                       if (pace->perms == 0) {
-                               if (got_other)
-                                       pace->perms = pace_other->perms;
-                       }
+                       if (got_other)
+                               pace->perms = pace_other->perms;
+                       else
+                               pace->perms = 0;
                        apply_default_perms(params, is_directory, pace, S_IRGRP);
                } else {
                        pace->perms = unix_perms_to_acl_perms(pst->st_ex_mode, S_IRGRP, S_IWGRP, S_IXGRP);