mirror of
https://github.com/samba-team/samba.git
synced 2024-12-23 17:34:34 +03:00
Deal with inheritance from parent directory when setting Windows
ACLs. Jeremy.
This commit is contained in:
parent
14f835ba4b
commit
646df8bec6
@ -9930,6 +9930,9 @@ NTSTATUS posix_fget_nt_acl(struct files_struct *fsp, uint32_t security_info,
|
||||
NTSTATUS posix_get_nt_acl(struct connection_struct *conn, const char *name,
|
||||
uint32_t security_info, SEC_DESC **ppdesc);
|
||||
int try_chown(connection_struct *conn, const char *fname, uid_t uid, gid_t gid);
|
||||
NTSTATUS append_parent_acl(files_struct *fsp,
|
||||
const SEC_DESC *pcsd,
|
||||
SEC_DESC **pp_new_sd);
|
||||
NTSTATUS set_nt_acl(files_struct *fsp, uint32 security_info_sent, const SEC_DESC *psd);
|
||||
int get_acl_group_bits( connection_struct *conn, const char *fname, mode_t *mode );
|
||||
int chmod_acl(connection_struct *conn, const char *name, mode_t mode);
|
||||
|
@ -317,6 +317,22 @@ static NTSTATUS fset_nt_acl_xattr(vfs_handle_struct *handle, files_struct *fsp,
|
||||
return status;
|
||||
}
|
||||
|
||||
if ((security_info_sent & DACL_SECURITY_INFORMATION) &&
|
||||
psd->dacl != NULL &&
|
||||
(psd->type & (SE_DESC_DACL_AUTO_INHERITED|
|
||||
SE_DESC_DACL_AUTO_INHERIT_REQ))==
|
||||
(SE_DESC_DACL_AUTO_INHERITED|
|
||||
SE_DESC_DACL_AUTO_INHERIT_REQ) ) {
|
||||
SEC_DESC *new_psd = NULL;
|
||||
status = append_parent_acl(fsp, psd, &new_psd);
|
||||
if (!NT_STATUS_IS_OK(status)) {
|
||||
/* Lower level acl set succeeded,
|
||||
* so still return OK. */
|
||||
return NT_STATUS_OK;
|
||||
}
|
||||
psd = new_psd;
|
||||
}
|
||||
|
||||
create_acl_blob(psd, &blob);
|
||||
store_acl_blob(fsp, &blob);
|
||||
|
||||
|
@ -3227,7 +3227,7 @@ int try_chown(connection_struct *conn, const char *fname, uid_t uid, gid_t gid)
|
||||
Take care of parent ACL inheritance.
|
||||
****************************************************************************/
|
||||
|
||||
static NTSTATUS append_parent_acl(files_struct *fsp,
|
||||
NTSTATUS append_parent_acl(files_struct *fsp,
|
||||
const SEC_DESC *pcsd,
|
||||
SEC_DESC **pp_new_sd)
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user