Index: smbd/open.c =================================================================== --- smbd/open.c (revision 25390) +++ smbd/open.c (revision 25391) @@ -1939,6 +1939,7 @@ char *parent_dir; const char *dirname; NTSTATUS status; + BOOL posix_open = False; if(!CAN_WRITE(conn)) { DEBUG(5,("mkdir_internal: failing create on read-only share " @@ -1957,6 +1958,7 @@ } if (file_attributes & FILE_FLAG_POSIX_SEMANTICS) { + posix_open = True; mode = (mode_t)(file_attributes & ~FILE_FLAG_POSIX_SEMANTICS); } else { mode = unix_mode(conn, aDIR, name, parent_dir); @@ -1981,6 +1983,14 @@ return NT_STATUS_ACCESS_DENIED; } + if (lp_store_dos_attributes(SNUM(conn))) { + if (!posix_open) { + file_set_dosmode(conn, name, + file_attributes | aDIR, NULL, + parent_dir); + } + } + if (lp_inherit_perms(SNUM(conn))) { inherit_access_acl(conn, parent_dir, name, mode); }