mirror of
https://github.com/samba-team/samba.git
synced 2025-01-11 05:18:09 +03:00
s3: modules: vfs_default: Remove CHMOD_ACL in mkdir.
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>
This commit is contained in:
parent
aaed6b4e99
commit
90117f25bf
@ -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;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user