我希望 Windows 客户端可以访问 *nix Samba 共享。
Samba 具有启用或禁用文件名区分大小写的选项。通常对于 Windows 访问,这是禁用的,因此 fred==FRED=fReD。
然而,这导致了一个主要问题,AFAICT:
- 在 unix 上,您创建两个文件夹,分别称为“RODDY”和“roddy”
- 在 Windows 上,您会看到这两个文件夹,但是...
- 当您从 Windows 删除/重命名/打开一个时,您最终可能会删除/重命名/等其中任何一个。 你没有办法知道是哪一个!.
所以,我的问题是,如果区分大小写的标志设置为“ON”,Samba 在 Windows 上的行为如何?用户是否仍然可以看到这两个文件夹,并且文件操作以一致的方式工作?
应该没问题。Windows 资源管理器在正确显示文件名大小写方面做得很好。我在我的 smb.conf 中使用它来确保我在 Explorer 中输入的内容是 Samba 使用的内容(我设置了所有这些 per-share):
我进行了快速测试(后端为 Samba 3.0.24,前端为 WinXP)。文件是通过 SSH 会话在 samba 服务器上创建的。
在此之后,我浏览了我的映射驱动器到测试目录。我可以看到“test1”和“TEST1”目录。我打开“test1”并看到了“foo”文件。我打开“TEST1”并看到了“bar”文件。到目前为止,一切都很好。
然后我回到 test 目录,在 Explorer 窗口中,将 TEST1 重命名为 TEST2。Windows 稍微吓了一跳——它重命名了文件夹,然后将两个文件夹显示为 TEST2——似乎已经重命名了这两个文件夹。但是,在 SSH 终端中,我检查了:
所以 Windows 重命名了文件,Samba 正确地得到了文件名。当我在资源管理器窗口中按 F5 以刷新文件夹内容时,显示屏更改为显示正确的文件夹名称。
警告: Linux 文件系统允许一些 Windows 不允许的字符(如“:”)。 Samba 有一个“名称修改”选项,可以将这些文件名转换为 Windows 喜欢的名称。例如,如果我在我的 SSH 窗口中创建一个名为“FA:23”的文件,Samba 会将名称更改为“F7T4H0~F”,这就是资源管理器窗口中显示的内容。
对我有用的选项如下: