What should happen when directory creation is only partially successful - not 4 copies of the directory?

Steve French smfrench at gmail.com
Fri Oct 28 20:02:37 UTC 2016


https://bugzilla.samba.org/show_bug.cgi?id=12397

On Fri, Oct 28, 2016 at 12:51 PM, Jeremy Allison <jra at samba.org> wrote:
> On Thu, Oct 27, 2016 at 11:03:40PM -0500, Steve French wrote:
>> Ran into an interesting scenario, that causes Windows explorer to
>> create four copies of a new directory when the user thinks directory
>> creation has failed - not sure how likely it is in practice but saw
>> the following if you set particular permissions (basically parent
>> directory allows things to be created under it, but the inherited
>> permissions for children don't allow that user or group to read the
>> file or its attributes).
>>
>> Going into exploer and clicking new results in a series of create
>> (directory) calls which appear to fail, but which end up creating four
>> directories e.g. "New folder (1)" through "New folder (4)"   (The
>> server is Samba 4.5.1, various Windows clients - I was experimenting
>> with Windows 8.1, but later clients fail too)
>>
>> An example of what you see in the log (stripping some boring ctdb stuff out):
>>
>> Windows checks if directory ("New folder (17)" in the case below)
>> exists - which it doesn't.  So it sends a create (directory, sharing =
>> none) request:
>>
>> Directory gets created ok:
>> [2016/10/27 03:56:34.629381,  5] ../source3/smbd/open.c:3460(open_directory)
>>   open_directory: opening directory New folder (17), access_mask =
>> 0x17019b, share_access = 0x0 create_options = 0x1, create_disposition
>> = 0x2, file_attributes = 0x10
>> [2016/10/27 03:56:34.629417,  5] ../source3/smbd/dosmode.c:206(unix_mode)
>>   unix_mode: unix_mode(New folder (17)) returning 0777
>>
>> But we return an error on the create call (presumably because we don't
>> have permissions):
>>
>> [2016/10/27 03:56:34.648221,  5] ../source3/smbd/files.c:128(file_new)
>>   allocated file structure fnum 2475839843 (3 used)
>>
>> [2016/10/27 03:56:34.649379,  5] ../source3/smbd/open.c:3661(open_directory)
>>   open_directory: Could not open fd for New folder (17)
>> (NT_STATUS_ACCESS_DENIED)
>
> OK - this can happen if the parent perms allow create,
> but the inherited ones don't allow any of the:
>
>         FILE_LIST_DIRECTORY|
>         FILE_ADD_FILE|
>         FILE_ADD_SUBDIRECTORY|
>         FILE_TRAVERSE|
>         DELETE_ACCESS|
>         FILE_DELETE_CHILD
>
> we've done the create, but the fd_open(conn, fsp, O_RDONLY|O_DIRECTORY, 0);
> then fails.
>
> Can you log a bug here please and I'll look into a correct
> fix for this.



-- 
Thanks,

Steve



More information about the samba-technical mailing list