diff options
-rw-r--r-- | source/smbd/open.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/source/smbd/open.c b/source/smbd/open.c index c21ad20312f..afe8d5e9b3a 100644 --- a/source/smbd/open.c +++ b/source/smbd/open.c @@ -2662,7 +2662,9 @@ NTSTATUS create_file_unixpath(connection_struct *conn, && (create_disposition != FILE_CREATE) && (share_access & FILE_SHARE_DELETE) && (access_mask & DELETE_ACCESS) - && (!can_delete_file_in_directory(conn, fname))) { + && (((dos_mode(conn, fname, &sbuf) & FILE_ATTRIBUTE_READONLY) + && !lp_delete_readonly(SNUM(conn))) + || !can_delete_file_in_directory(conn, fname))) { status = NT_STATUS_ACCESS_DENIED; goto fail; } |