s3: modules: vfs_default: Remove CHMOD_ACL in mkdir.
authorJeremy Allison <jra@samba.org>
Thu, 17 May 2018 18:03:53 +0000 (11:03 -0700)
committerJeremy Allison <jra@samba.org>
Fri, 25 May 2018 16:39:24 +0000 (18:39 +0200)
Now I understand the use of the mask in POSIX ACLs
this extra step is no longer needed. If the mkdir
succeeded it's already set the correct mode.

Signed-off-by: Jeremy Allison <jra@samba.org>
Reviewed-by: Volker Lendecke <vl@samba.org>
source3/modules/vfs_default.c

index e335e270650ff256fe1041eb8806e58a641a69f0..956cebfd59275c513e0a82b8cbc4c6ad6f7e83f4 100644 (file)
@@ -498,7 +498,6 @@ static int vfswrap_mkdir(vfs_handle_struct *handle,
                        mode_t mode)
 {
        int result;
-       bool has_dacl = False;
        const char *path = smb_fname->base_name;
        char *parent = NULL;
 
@@ -506,7 +505,7 @@ static int vfswrap_mkdir(vfs_handle_struct *handle,
 
        if (lp_inherit_acls(SNUM(handle->conn))
            && parent_dirname(talloc_tos(), path, &parent, NULL)
-           && (has_dacl = directory_has_default_acl(handle->conn, parent))) {
+           && directory_has_default_acl(handle->conn, parent)) {
                mode = (0777 & lp_directory_mask(SNUM(handle->conn)));
        }
 
@@ -514,21 +513,6 @@ static int vfswrap_mkdir(vfs_handle_struct *handle,
 
        result = mkdir(path, mode);
 
-       if (result == 0 && !has_dacl) {
-               /*
-                * We need to do this as the default behavior of POSIX ACLs
-                * is to set the mask to be the requested group permission
-                * bits, not the group permission bits to be the requested
-                * group permission bits. This is not what we want, as it will
-                * mess up any inherited ACL bits that were set. JRA.
-                */
-               int saved_errno = errno; /* We may get ENOSYS */
-               if ((SMB_VFS_CHMOD_ACL(handle->conn, smb_fname, mode) == -1) &&
-                               (errno == ENOSYS)) {
-                       errno = saved_errno;
-               }
-       }
-
        END_PROFILE(syscall_mkdir);
        return result;
 }