解决vsftpd上传文件在samba下乱码问题

由于特殊需求,服务器上的一个文件夹既要可以使用ftp访问,又要可以使用samba文件共享方式访问,于是在服务器上安装了samba和vsftpd(选vsftpd是因为centos安装盘上自带,偷个懒),安装使用大体没问题,但发现通过vsftpd上传的文件,在samba下看是乱码,并且很多乱码文件无法删除,估计是编码问题,搜了一下,果然如此。
其原因就是vsftp没有处理编码,而一般用IE或者别的工具上传文件就会使用GB2312编码,Linux服务器上使用的是utf8编码,用samba访问肯定造成乱码,如果使用Firefox设置默认使用UTF8编码的话就可以解决这个问题,但是没法要求客户端都统一做这个设置,并且也不能避免用户使用IE登录FTP,只好在服务器上下手了。
因为是迁就客户端,所以vsftpd上不用做修改了,只需要修改samba配置文件,让samba使用的编码更改成中文编码就可以了
在/etc/samba/smb.conf文件中[global]区域内增加如下配置,如果已有则修改成如下配置。

1
2
3
display charset = cp936
dos charset = cp936
unix charset = cp936

再重启samba服务即可

1
#/etc/init.d/smb restart

需要注意到一点是,之前正常在samba共享里存入的正常显示中文名的文件会变成乱码,需要重新修改成中文才可以,之前通过vsftpd文件传上去的乱码文件会自动变成正常中文,如果中文名数据很多,最好先挪出来再改这个配置。