Re: filenames with special chars and posix path caps enabled - regression?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Steve,

Thanks for the quick response; on 4.0.9 I get:

root@darkstar:~# grep cifs /proc/mounts
//localhost/shared /mnt cifs
rw,relatime,vers=1.0,cache=strict,username=user,domain=MYSERVER,uid=0,noforceuid,gid=0,noforcegid,addr=127.0.0.1,unix,posixpaths,serverino,acl,rsize=1048576,wsize=65536,actimeo=1
0 0

and:

root@darkstar:~# cat /proc/fs/cifs/DebugData
Display Internal CIFS Data Structures for Debugging
---------------------------------------------------
CIFS Version 2.06
Features:
Active VFS Requests: 0
Servers:
1) Name: 127.0.0.1  Domain: MYWORKGROUP Uses: 1 OS: Windows 6.1
        NOS: Samba 4.2.12       Capability: 0x8080f3fd
        SMB session status: 1   TCP status: 1
        Local Users To Server: 1 SecMode: 0x3 Req On Wire: 0
        Shares:
        1) \\localhost\shared Mounts: 1 Type: NTFS DevInfo: 0x20
Attributes: 0x1002f PathComponentMax: 255 Status: 1 type: DISK

        MIDs:

Booting into 4.1.1 I get a slightly different output for the mount
flags (never seen "mapposix" before):

root@darkstar:~# grep cifs /proc/mounts
//localhost/shared /mnt cifs
rw,relatime,vers=1.0,cache=strict,username=user,domain=MYSERVER,uid=0,noforceuid,gid=0,noforcegid,addr=127.0.0.1,unix,posixpaths,serverino,mapposix,acl,rsize=1048576,wsize=65536,actimeo=1
0 0

But /proc/fs/cifs/DebugData is identical to the one above.

Any clues?

Cheers,
Andrea.

On Wed, 20 Jul 2016 11:04:53 -0500, Steve French <smfrench@xxxxxxxxx>
wrote:

> Can you "cat /proc/mounts | grep cifs" so we can see the mount flags
> that got set or negotiated and also dump the /proc/fs/cifs/DebugData
> contents
> 
> On Wed, Jul 20, 2016 at 10:43 AM,  <a.biardi@xxxxxxxxxx> wrote:
> >
> > Hi all,
> >
> > Recently I've upgraded an older linux box that was still happily
> > running a 3.10.17 kernel; with the new kernel (4.4.14) I can no
> > longer access files on a cifs filesystem if the filenames contain
> > special characters (question mark, in my test case; unix extensions
> > enabled on the samba server).
> >
> > I'm not sure it's a bug, but I haven't been able to find out
> > anything in the kernel changelogs that pointed to a change in
> > behaviour (e.g. a new parameter).
> >
> > To reproduce the problem, I set up a minimal environment with a
> > cut-down smb.conf and mount a samba share that contains a file named
> > "file?" (no quotes, but trailing question mark). The test
> > environment is the same, the only difference is the kernel I boot
> > (same kernel .config).
> >
> > Whereas older kernels behave as I would expect (I can "ls", "stat"
> > and "cat" the oddly-named file), newer ones do mount, ls, stat just
> > fine, but fail on cat 'file?' > /dev/null with a "No such file or
> > directory" error.
> >
> > After trying out a clean build from the latest 4.6.4 kernel to no
> > avail, I narrowed down the large version gap between 3.10.17 and
> > 4.4.14 and found out that something must have changed between 4.0.9
> > (works ok) and 4.1.1 (doesn't work anymore).
> >
> > Checked kernel changelogs and even diff'ed the two source trees but
> > my untrained eye didn't spot anything obvious.
> >
> > Question. Am I missing something here? With a default samba
> > configuration (unix extensions = yes, mangled names = yes), am I not
> > expected to be able to use filenames containing DOS-reserved
> > characters (such as ? and ") from a unix client without problems?
> >
> > Here's the traced output of my test script on a 4.1.1 kernel (this
> > machine is both the samba server and the cifs client; whitespace
> > sequences shortened):
> >
> > + uname -a
> > Linux darkstar 4.1.1 #1 SMP Wed Jul 20 13:21:28 IST 2016 x86_64
> >   Intel(R) Core(TM) i5-3337U CPU @ 1.80GHz GenuineIntel GNU/Linux
> > + mount.cifs -V
> > mount.cifs version: 5.5
> > + samba --version
> > Version 4.2.12
> > + grep . /proc/fs/cifs/LinuxExtensionsEnabled
> > 1
> > + cat /etc/samba/smb.conf
> > [global]$
> > workgroup = MYWORKGROUP
> > netbios name = MYSERVER
> > server string = myserver.myworkgroup
> > security = user
> > syslog = 0
> > printing = bsd
> > load printers = no
> > disable spoolss = yes
> > #unix extensions = yes   # default setting anyway
> > #mangled names = yes     # default setting anyway
> >
> > [shared]
> > path = /tmp/shared
> > read only = no
> > + ls -l /tmp/shared/
> > total 12
> > -rw-r--r-- 1 root root 24 Jul 20 09:53 "file"
> > -rw-r--r-- 1 root root 22 Jul 20 09:53 file
> > -rw-r--r-- 1 root root 23 Jul 20 09:53 file?
> > + mount -t cifs -o
> > username=user,password=pass //localhost/shared /mnt
> > + cd /mnt
> > + ls
> > "file"  file  file?
> > + stat 'file?'
> >   File: 'file?'
> >   Size: 23              Blocks: 8          IO Block: 16384  regular
> > file Device: 19h/25d Inode: 1328306     Links: 1
> > Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/
> > root) Access: 2016-07-20 09:53:16.608205000 +0100
> > Modify: 2016-07-20 09:53:10.214392400 +0100
> > Change: 2016-07-20 09:53:10.214392400 +0100
> >  Birth: -
> > + cat 'file?'
> > cat: file?: No such file or directory
> >
> > ^^ note how stat succeeds, but cat fails (and yes, the argument is
> > properly shell-quoted). Rebooting into a 4.0.9 kernel (same .config)
> > gives me the expected:
> >
> > + cat 'file?'
> > hello, this is <file?>
> >
> > I've also captured pcaps for 4.0.9 and 4.1.1 and loaded them up in
> > wireshark, but found no visible difference (except for the final
> > response from samba).
> >
> > If I set /proc/fs/cifs/cifsFYI to 7, the only difference between a
> > good run (4.0.9 and below) and a bad one (4.1.1+) is a line that
> > reads:
> >
> > Status code returned 0xc0000034 NT_STATUS_OBJECT_NAME_NOT_FOUND
> >
> > Thinking of a problem with my smb.conf, I tried the userspace tool
> > smbclient to browse the share and retrieve the offending file;
> > works as expected -- both with posix disabled + mangled names, and
> > posix enabled
> > + unmangled names:
> >
> > + smbclient -U user //localhost/shared pass -c 'dir; stat FP5AFZ~2;
> > get FP5AFZ~2 /dev/stdout'
> > Domain=[MYWORKGROUP] OS=[Windows 6.1]
> > Server=[Samba 4.2.12]
> > .         D      0  Wed Jul 20 09:51:14 2016
> > ..        D      0  Wed Jul 20 14:40:56 2016
> > file      N     22  Wed Jul 20 09:53:10 2016
> > FP5AFZ~2  N     23  Wed Jul 20 09:53:10 2016
> > _WHSTP~N  N     24  Wed Jul 20 09:53:10 2016
> >   41152832 blocks of size 1024. 10022996 blocks available
> > File: \FP5AFZ~2
> > Size: 23                Blocks: 8       regular file
> > Inode: 1328306  Links: 1
> > Access: (0644/-rw-r--r--)       Uid: 0  Gid: 0
> > Access: 2016-07-20 09:53:17 +0100
> > Modify: 2016-07-20 09:53:10 +0100
> > Change: 2016-07-20 09:53:10 +0100
> > getting file \FP5AFZ~2 of size 23 as /dev/stdout (22.5
> > KiloBytes/sec) hello, this is <file?>
> >
> > + smbclient -U user //localhost/shared pass -c 'posix; dir; stat
> > file?; get file? /dev/stdout'
> > Domain=[MYWORKGROUP] OS=[Windows 6.1]
> > Server=[Samba 4.2.12] Server supports CIFS extensions 1.0 Server
> > supports CIFS capabilities locks acls pathnames
> > posix_path_operations large_read posix_encrypt
> > .        D       0  Wed Jul 20 09:51:14 2016
> > ..       D       0  Wed Jul 20 14:40:56 2016
> > file     N      22  Wed Jul 20 09:53:10 2016
> > file?    N      23  Wed Jul 20 09:53:10 2016
> > "file"   N      24  Wed Jul 20 09:53:10 2016
> >   41152832 blocks of size 1024. 10022996 blocks available
> > File: /file?
> > Size: 23                Blocks: 8       regular file
> > Inode: 1328306  Links: 1
> > Access: (0644/-rw-r--r--)       Uid: 0  Gid: 0
> > Access: 2016-07-20 09:53:17 +0100
> > Modify: 2016-07-20 09:53:10 +0100
> > Change: 2016-07-20 09:53:10 +0100
> > getting file /file? of size 23 as /dev/stdout (22.5 KiloBytes/sec)
> > hello, this is <file?>
> >
> > I am at a loss. Is this a bug?
> >
> > Thanks,
> > Andrea.
> > --
> > To unsubscribe from this list: send the line "unsubscribe
> > linux-cifs" in the body of a message to majordomo@xxxxxxxxxxxxxxx
> > More majordomo info at  http://vger.kernel.org/majordomo-info.html  
> 
> 
> 

--
To unsubscribe from this list: send the line "unsubscribe linux-cifs" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux