Answers:
Windows不允许Unix允许的文件名中的某些字符。Samba“破坏”文件名以使其符合Windows限制。您可以检查文件/etc/smb.conf
或/etc/samba/smb.conf
查看已有的设置。要显示这些设置以及默认设置,请使用以下命令:
testparm -vs | less
缩小一点:
testparm -vs|grep "case\|mangl"
我在OS-X和Windows上使用共享文件夹。某些文件具有相同的问题,因为它们属于以下几种:它们使用文件名中的字符,Windows不支持。
请参阅:http : //support.microsoft.com/kb/177506
它列出了文件或目录中Windows不支持的字符。我猜想,Samba在列出文件和目录时使用相同的字符列表。
A filename cannot contain any of the following characters:
\ / : * ? " < > |
再往下走,他们写道:
可用于命名文件,文件夹或快捷方式的字符包括字母(AZ)和数字(0-9)的任意组合,以及以下特殊字符:
^ Accent circumflex (caret) & Ampersand ' Apostrophe (single quotation mark) @ At sign { Brace left } Brace right [ Bracket opening ] Bracket closing , Comma $ Dollar sign = Equal sign ! Exclamation point - Hyphen # Number sign ( Parenthesis opening ) Parenthesis closing % Percent . Period + Plus ~ Tilde _ Underscore
但是,我个人以不允许使用的字符列表为参考,在此向一些客户介绍情况;)
我拥有一台苹果Macbook Pro笔记本电脑,该笔记本电脑运行通过Macports安装的运行Samba 3的64位OS X 10.11“ El Capitan” 。
我还拥有一台戴尔Inspiron笔记本电脑,该笔记本电脑具有运行通过APT安装的Samba 3的64位GNU / Linux XUbuntu 16.04“ Xenial Xerus”。
两台机器都有网络共享的文件夹,并使用Samba以便在我的WLAN(无线LAN)上进行通信。
我的两个系统都是巴西葡萄牙语。因此,我使用诸如ç,á,ã,â,ô,é,ó等的特殊字符。
当我使用Linux笔记本电脑访问OS X Samba共享时,所有字符串均正确显示:诸如maçã,ônus和bênção之类的单词均正确显示。还显示带有长名称的文件和文件夹,并且正确显示了它们的名称。因此,已经正确配置了在OS X上运行的Samba服务器...
...但是事情没有反过来:如果我使用OS X上的Finder应用程序访问我的Linux Samba共享,则不会显示具有至少一个特殊字符的所有文件和文件夹(它们对于我),文件和文件夹的长名称被转换为怪异的短名称。因此,在我的Linux机器上运行的Samba服务器出了点问题。
=>就我而言,解决此问题的方法是将以下行添加到Linux计算机上文件[global]
内的部分中smb.conf
:
mangled names = no
dos charset = CP850
unix charset = UTF-8
之后,我打开一个shell终端窗口,并使用以下命令重新启动Linux Samba服务器:
sudo service smbd restart
...可以用其他命令代替(如果以上命令在您的Linux发行版中不起作用):
sudo systemctl restart smbd.service
重新启动Linux Samba服务器之后,OS X上的Finder应用程序最终正确显示了所有先前隐藏的文件和文件夹,因为它们的名称具有一个或多个特殊字符。整齐(“缩短”)的名称也被“取消修改”。
脚注:
smb.conf
文件的标准位置是/etc/samba/smb.conf
smb.conf
文件存储在标准位置/etc/samba/
:有几种不同的方法来编辑smb.conf
文件。例如,如果您不使用桌面环境(例如您的系统只有一个Shell终端,没有Windows),则可以通过发出诸如或之类的命令来安装Nano文本编辑器(取决于您使用的Linux发行版)正在使用),然后运行。如果您使用的是桌面环境,则可以通过发出诸如或之类的命令(取决于所使用的Linux发行版)来安装图形文本编辑器(如GNOME Edit),然后运行。sudo apt-get install nano -y
sudo dnf -b -y install nano
sudo nano /etc/samba/smb.conf
sudo apt-get install gedit -y
sudo dnf -b -y install gedit
sudo gedit /etc/samba/smb.conf
display charset
参数已弃用。dos charset
参数不支持该UTF-8
参数。因此,它必须使用默认参数CP850
。mangled names = no
指示Samba服务器不要缩短文件和文件夹的长名称。因此,由于Samba客户端只是向用户复制Samba服务器提供给客户端的内容,因此,一旦服务器配置正确,客户端就不会再向用户显示任何简称。从samba文档中,您可以使用以下命令:
dos charset = ISO8859-1
unix charset = ISO8859-1
display charset = ISO8859-1