14

I want to have a *nix Samba share accessible by Windows clients.

Samba has an option to enable or disable filename case-sensitivity. Normally for windows access, this is disabled, so that fred==FRED=fReD.

However, this leads to one major gotcha, AFAICT:

  • On unix, you create two folders called "RODDY" and "roddy"
  • On Windows, you'll see both of the folders, but...
  • When you delete/rename/open one from Windows, you could end up deleting/renaming/etc either of them. You have no way of knowing which!.

So, my question is, how does Samba behave on windows if the case-sensitive flag is set "ON"? Can a user still see both folders, and have file operations work in a consistent manner?

voretaq7
  • 79,345
  • 17
  • 128
  • 213
Roddy
  • 280
  • 1
  • 4
  • 9

2 Answers2

15

It should be fine. Windows Explorer does a fine job of displaying filename case correctly. I use this in my smb.conf to make sure what I type in Explorer is what Samba uses (I set all of these per-share):

case sensitive = True
default case = lower
preserve case = yes
short preserve case = yes

I ran through a quick test (Samba 3.0.24 on the backend, WinXP on the front). Files were created on the samba server via an SSH session.

$ cd /some/samba/share/path
$ mkdir test
$ cd test

$ mkdir test1 TEST1
$ touch test1/foo TEST1/bar

After this, I browsed through my mapped drive to the test directory. I can see both "test1" and "TEST1" directories. I opened "test1" and saw the "foo" file. I opened "TEST1" and saw the "bar" file. So far so good.

Then I went back to the test directory, and in the Explorer window, renamed TEST1 to TEST2. Windows freaked slightly -- it renamed the folder, then showed BOTH folders as TEST2 -- appearing to have renamed both folders. But, in the SSH terminal, I checked:

$ ls
test1 TEST2

So Windows renamed the file, and Samba got the filename correctly. When I pressed F5 in the Explorer window to refresh the folder contents, the display changed to show the correct folder names.

Caveat: Linux filesystems allow some characters that Windows doesn't (like ":"). Samba has a "name mangling" option to turn those filenames into something Windows will like. If I make a file called "FA:23" in my SSH window, for example, Samba mangles the name to "F7T4H0~F" and that's what appears in the Explorer window.

quack quixote
  • 1,665
  • 14
  • 17
  • Note that with a Windows 95 client you can't access directories inside shares when the `case sensitive` option is enabled. You should use the `auto` option in this case. – devius Oct 18 '14 at 16:32
  • Assume you have two folders on your unix filesystem: Test1 and test1 Which one will a user see in windows? Can I makge sure in Samba that if a folder Test1 exists, and someone on unix tries to create a folder test1, that it automatically merges it to Test1 instead, so that Windows users will always be able to see all files? In my experience, Windows user cannot see both folders if Test1 and test1 exist, but only one of them. – Erik Apr 15 '16 at 08:13
  • @Erik Normally both will show up. Windows understands case sensitivity at all levels and has it implemented deep down to its file systems. Didn't try though. – oxygen Jul 03 '18 at 15:43
  • According to the official documentation (https://www.samba.org/samba/samba/docs/3.4/man-html/smb.conf.5.html) the `case sensitive = True` is not correct. This is the correct configuration: `case sensitive = yes/no/auto`. Be careful with this! – zappee Jun 19 '21 at 14:28
1

The options which worked for me are below:

preserve case           = yes
short preserve case     = yes
Falcon Momot
  • 24,975
  • 13
  • 61
  • 92
surajmohan
  • 11
  • 1