Opened 5 years ago

Closed 4 years ago

#260 closed defect (invalid)

Case sensitivity issues

Reported by: Lewis Rosenthal Owned by:
Priority: minor Milestone:
Component: Samba Client Plugin Version: Client 3.0.x
Keywords: case, sensitive, sensitivity Cc:

Description

I didn't have a better subject, sorry. Suggest that this may become a meta bug for all issues with case sensitivity.

Current issue:

Samba server 4.1.8 on openSuSE, configured for SMB2 and no case sensitivity setting for the share in smb.conf should default to auto (see https://www.samba.org/samba/docs/man/manpages-3/smb.conf.5.html#NAMEMANGLING). Apparently, while https://www.samba.org/samba/docs/man/manpages/smbclient.1.html indicates that the case_sensitive flag should be toggled off by default, we seem to have it on, as accessing a share on the above with:

 7-04-15  17:32         <DIR>    1,252  Desktop
 7-04-15  17:49         <DIR>      548  Images
 7-04-15  17:49         <DIR>        0  RecycleBin
 7-04-15  17:31           1,111      0  POPUPLOG.2014-12-04
 7-04-15  17:31         159,305      0  POPUPLOG.OS2
         160,416 bytes in 2 files and 3 dirs
         164,864 bytes allocated
 465,719,918,592 bytes (433GB) free

running the following command fails:

[c:\]dir k:\images

 Volume in drive K is NETDRIVE
SYS0002: The system cannot find the file specified. "K:\images\*"
               0 bytes in 0 files and 0 dirs
 465,720,012,800 bytes (433GB) free

while:

[c:\]dir k:\Images

succeeds.

It is necessary to actually set the share to case senstivity = no in order for the case-insensitive filenames to be recognized.

This only appears to be an issue with the plugin. smbclient works as expected:

smb: \> ls images
  Images                              D        0  Sat Jul  4 17:49:16 2015

                712503296 blocks of size 1024. 454804620 blocks available

Perhaps a toggle in the plugin properties to enable/disable case-sensitivity for the share would be helpful.

Change History (18)

comment:1 Changed 5 years ago by Lewis Rosenthal

I should have added that this is with:

 7-04-15  17:23       5,512,638    124  ndpsmb.dll

comment:2 Changed 5 years ago by Paul Smedley

I'll guess smbclient sets this flag automatically - it should be trivial to do the same in ndpsmb.dll

comment:3 Changed 5 years ago by Paul Smedley

Seems to be we should be setting case_sensitive to no by default on OS/2. Interesting though that smbclient works - I'm assuming you mean smbclient running under OS2?

comment:4 Changed 5 years ago by Lewis Rosenthal

smbclient under OS/2, yes, Paul. I hadn't even thought to test under Linux, as I'm so accustomed to case sensitivity there, even when mounting an otherwise case-insensitive share, such as a NetWare? volume (simply as a result of how mounts work under Linux). As I say, I've not tested smbclient on Linux in this regard.

My vote would be for case_sensitive no by default, with a checkbox to enable it if desired (though I'm hard pressed to think of when - on OS/2 - I might even desire case sensitivity on OS/2). Perhaps the option to enable it isn't even really necessary. Globally, of course, we could just set this in smb.conf.

comment:5 Changed 5 years ago by Lewis Rosenthal

Scratch that last bit. I can't seem to override this using:

case sensitive = no

in smb.conf, as this is not a global option but a per-share option.

comment:6 Changed 5 years ago by Paul Smedley

A build that should force case sensitive to no is at http://smedley.id.au/tmp/ndpsmb-samba_4.2.3-heimdal-20150716b.zip

comment:7 Changed 5 years ago by Lewis Rosenthal

Still fails for me with:

Signature:       @#netlabs:3.0.x#@##1## 16 Jul 2015 06:05:30     ECS85332116::en
::::@@NDPSMB - SMBFS NetDrive External Plugin Build beta-date
Vendor:          netlabs
Revision:        3.00.x
Date/Time:       16 Jul 2015 06:05:30
Build Machine:   ECS85332116
Language Code:   en
File Version:    3.0
Description:     NDPSMB - SMBFS NetDrive External Plugin Build beta-date

Log snippet:

2015/07/15 21:21:45.54: 8 2: adding <log.smbd> 289 0 261
2015/07/15 21:21:45.60: 9 2: NdpFindStart <images> (\images) cnt 0 0
2015/07/15 21:21:45.60: 9 2: NdpEASize in [0x66ea40] <\Images>
2015/07/15 21:21:45.60: 4 2:  smbwrp_listea
2015/07/15 21:21:45.60: 4 2: EAList for <\Images>
2015/07/15 21:21:45.70: 4 2: num_eas = 1
2015/07/15 21:21:45.71: 4 2: 0 Got EA <.CLASSINFO> with namelen 10, size 529. Gr
oss 4. Buf 65536
2015/07/15 21:21:45.71: 4 2: ret size = 548
2015/07/15 21:21:45.71: 9 2: NdpEASize <Images> 548 0
2015/07/15 21:21:45.71: 9 2: NdpRsrcQueryInfo in
2015/07/15 21:21:45.71: 9 2: NdpRsrcQueryInfo 0
2015/07/15 21:21:45.71: 9 2: NdpQueryPathInfo in [0x66ea40] <images\*>
2015/07/15 21:21:45.71: 9 2: NdpFindStart in [0x66ea40]
2015/07/15 21:21:45.71: 9 2: NdpFindStart: dir [\images\], dir_mask [*], mask [\
images\*], szPath [images\*]
2015/07/15 21:21:45.71: 4 2:  smbwrp_filelist
2015/07/15 21:21:45.71: 1 2: Filelist <\images\*> on master <WORKGROUP> wgrp <wo
rkgroup> server <dp45sg> share <Test> clidev <(null)>
2015/07/15 21:21:45.71: 1 2: list_files
2015/07/15 21:21:45.71: 4 2: SMB2 detected, calling list_files_smb2()
2015/07/15 21:21:45.71: 1 2: list_files_smb
2015/07/15 21:21:45.74: 9 2: NdpFindStart <images\*> (\images\*) cnt 0 87
Last edited 5 years ago by Lewis Rosenthal (previous) (diff)

comment:8 Changed 5 years ago by Paul Smedley

seems like cli_qpathinfo2() changed between samba 3.6.x and 4.2.2

With Samba 3.6.x client, cli_qpathinfo2() called with q:\public\desktop\internet succeeds - with Samba 4.2.x client it fails.

Now I need to work out how to fix it :/ setting case insensitive doesn't cut it

comment:9 Changed 5 years ago by Paul Smedley

Seems this is at least somewhat dependent on the Samba server version in use.

On my raspberry pi running Samba Server v3.6.x, running a dir on p:\desktop\internet works

Running it on Ubuntu running Samba 4.1.x it fails

comment:10 Changed 5 years ago by Paul Smedley

likewise it works on my OS/2 Samba server running 3.3.x. Of course it doesn't explain why things work with smbclient

comment:11 Changed 5 years ago by Paul Smedley

This appears to be a SMB >= 2 issue. Forcing NT1 protocol allows things to work with my Samba 4.1.x server

comment:12 Changed 5 years ago by Paul Smedley

I believe this is a samba bug - refer https://bugzilla.samba.org/show_bug.cgi?id=11438

comment:13 Changed 4 years ago by Lewis Rosenthal

Patch has been submitted for testing (attached to the above referenced bug). Let's see if that has any impact on this.

comment:14 Changed 4 years ago by Lewis Rosenthal

Paul, have you included Christian's patch from the above-referenced Samba bug in the latest 4.4.2 build? I am still seeing this condition when connecting via SMB3.0 to samba-4.2.2-5.10.x86_64 on openSUSE 13.2.

Output of smbstatus on the server side:

Samba version 4.2.2-5.10-3413-SUSE-oS13.2-x86_64
PID     Username      Group         Machine            Protocol Version
------------------------------------------------------------------------------
31779     lewis         users         192.168.100.18 (ipv4:192.168.100.18:51383)
 SMB3_00

comment:15 Changed 4 years ago by Paul Smedley

No I still need to try that patch. I fear that patch is server-side...

comment:16 Changed 4 years ago by Lewis Rosenthal

Well, if it's a server-side issue, then it's not the fault of our client. I can try building the SUSE version with the patch over here.

You're right. the file to be patched is source3/smbd/smb2_server.c. I'll see about building this over here and testing. I should have looked at the patch when Christian posted it.

comment:17 Changed 4 years ago by Paul Smedley

I still believe it's a client issue - a Windows client seems to work OK - but I may be wrong...

comment:18 Changed 4 years ago by Lewis Rosenthal

Resolution: invalid
Status: newclosed

Building Samba 4.4.3 on openSUSE including the patches attached to https://bugzilla.samba.org/show_bug.cgi?id=11438 seems to address the issue (SMB2 and SMB3).

Time to close this as not an OS/2 bug.

Note: See TracTickets for help on using tickets.