[分享]解决vsftpd乱码(vsftpd-2.0.6)

Web、Mail、Ftp、DNS、Proxy、VPN、Samba、LDAP 等基础网络服务
angelus
帖子: 445
注册时间: 2007-08-27 17:31

[分享]解决vsftpd乱码(vsftpd-2.0.6)

#1

帖子 angelus » 2008-06-22 19:39

相信大家都对vsftpd的乱码问题很头疼,这里的补丁包是某位达人编写的,在这里表示非常感谢
源里最新的vsftpd版本是2.0.6的,这里使用了源里提供的源码包进行打补丁


这里有点建议,如果想让自己编译后的vsftpd与源安装没有什么区别的话
最好先安装源中的vsfpd,然后把所有的功能都配置完后,在解决中文乱码问题
因为删除源的vsftpd后它的/init.d/vsftpd与/vsftpd.conf是不会删除的,可以为我们打好铺垫,不然你会发现很无奈的!如果你是直接编译安装,附件给出会给出我的init.d/vsftpd与vsftpd.conf文件,把他们覆盖到/etc下吧!

这里是需要手工编译的,大家不要怕麻烦,其实很简单的
开始做编译的准备工作,准备编译环境需要的库包
sudo apt-get build-dep vsftpd
----------------------------------------
这里使用先安装源里的vsftpd,然后卸载
sudo apt-get install vsftpd
sudo apt-get remove vsftpd
-----------------------------------------
下载附件并解压包
tar -zxvf vsftpd-2.0.6
cd vsftpd-2.0.6
sudo su :使用root用户开始编译
make #编译命令,如果无错误出现,表示成功
make install #安装
如果安装中出现找不到目录的话,就建立那个缺的目录就好了
基本上都会提示缺少/man8和/man5目录的,建立后在重新make install

下边就来测试下效果修改配置文件,加入
charset_filter_enable=YES #开启符过滤
charset_client=GB2312 #客户端字符设置为简体中文
好了现在把服务开启测试下吧
sudo /etc/init.d/vsftpd restart

在win下上传一个中文文件,看看效果吧,然后在把配置文件中关于字符的关掉,重起服务,在看吧

如果有什么问题的话,请回帖留言
已经测试过,服务器ubuntu8.04-server,客户机xp,xp上传后编码正常
补充下会遇到的问题
1:如果使用/etc/init.d/vsftpd restart 没有任何输出的话,请更改/init.d/vsftpd的内容把启动路径该为/usr/local/sbin/vsftpd,因为编译安装首先会优先安装到这个路径
2:如果匿名用户无法登陆,老是提示不允许匿名登陆而配置文件中又设置了允许,请建立目录
sudo mkdir /usr/share/empty 建立后就可以了
3:如果在linux下上传文件,如果工具允许的话,设置为gb2312编码上传,或是尽量用英文
4:因为补丁在一定程度覆盖原程序,所以有2G限制,有时间会去看下源代码的,基本确定是数值溢出问题
如果修复的话,会补充上的
附件
vsftpd-2.0.6.tar.gz
集成vsftpd-2.0.6-encoding.patch与vsftpd-syscall.patch补丁的源码包,源码包可以放心使用,包源来自ubuntu.cn99.com
(172.67 KiB) 已下载 1682 次
vsftpd.tar.gz
包含/etc/init.d/vsftpd与/etc/vsftpd.conf
(1.1 KiB) 已下载 920 次
上次由 angelus 在 2008-08-18 20:19,总共编辑 22 次。
你能学会世界上所有语言来叫一种鸟的名字,当你知道所有这些名字叫法后,却对这种鸟一无所知~
理查德-费曼
头像
haolll230
帖子: 77
注册时间: 2007-11-02 18:17
来自: 广东潮州
联系:

#2

帖子 haolll230 » 2008-06-22 19:40

支持下
我爱女朋友,也爱linux(^_^)
thisisdong
帖子: 8
注册时间: 2007-08-19 23:58

#3

帖子 thisisdong » 2008-06-23 22:23

vvvli
帖子: 441
注册时间: 2006-10-26 7:02

#4

帖子 vvvli » 2008-06-23 22:41

这个补丁有个bug不能处理超过2g的文件,不过看补丁源码完全不知道这个bug怎么来的,关掉 charset_filter_enable

bug还在。
angelus
帖子: 445
注册时间: 2007-08-27 17:31

#5

帖子 angelus » 2008-08-11 10:34

今天有点时间就把找来的2.0.6的补丁打上并发上来了,大家可以放心使用
你能学会世界上所有语言来叫一种鸟的名字,当你知道所有这些名字叫法后,却对这种鸟一无所知~
理查德-费曼
头像
jyfish
帖子: 203
注册时间: 2008-02-08 15:25
来自: 海南海口
联系:

#6

帖子 jyfish » 2008-08-11 20:08

留记号
海南海口
免费指导安装配置 Ubuntu/Linux
提供刻录 Ubuntu/Linux 光盘
企鹅 139760081
iabuest[A.T]gmail.com

http://www.iabu.net
头像
Stupid kid
帖子: 416
注册时间: 2006-10-18 12:57

#7

帖子 Stupid kid » 2008-08-11 20:58

其实vsftpd嘛,源码安装不是很好吗?utf8总该没有乱码了吧?是在不行,都用e文的算了
http://twitter.com/nothining
Mail: bjdfzster@gmail.com
南京的开源活动几乎是0,希望能有人组织下(也可以拉我入伙^_^)
最近在从零开始学习Linux程序设计,加油……
angelus
帖子: 445
注册时间: 2007-08-27 17:31

#8

帖子 angelus » 2008-08-11 21:30

源码安装需要知识比较多些,不适合新接触或从win转过来的用户,这将极大的阻止用户积极性
如果win自带的访问ftp的可以选择utf-8的话,这个贴子就不会存在的
都用e文就更不现实了,特别在中国,如果只是提供下载的话,顶多对管理员麻烦点,
但如果提供一定客户的附件上传,这将是灾难性的,因为你不能限定你的用户都使用E文
你能学会世界上所有语言来叫一种鸟的名字,当你知道所有这些名字叫法后,却对这种鸟一无所知~
理查德-费曼
nifi
帖子: 335
注册时间: 2005-06-12 12:23

还是不行啊

#9

帖子 nifi » 2008-08-15 18:36

我在804ser下先安装了vsftpd,配置好以后发现有乱码问题,然后就按帖子上说的做
1、sudo apt-get remove vsftpd
2、下载附件中的源码包安装
sudo make
sudo make install
安装的时候提示:
install: cannot create regular file `/usr/local/man/man8/vsftpd.8': No such file or directory
install: cannot create regular file `/usr/local/man/man5/vsftpd.conf.5': No such file or directory
make: *** [install] Error 1
但是我没有建立缺少的那些文件
3、用附件中的vsftpd覆盖/etc/init.d/vsftpd,/etc/vsftpd.conf还用我原来的,内容如下:
listen=YES
max_clients=100
max_per_ip=10
check_shell=NO
anonymous_enable=YES
anon_root=/media/sda7/pub
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list
secure_chroot_dir=/var/run/vsftpd
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
charset_filter_enable=YES
charset_client=GB2312

结果还是老样子,我用cuteftp上传下载都没有乱码现象,但是在XP下查看用cuteftp上传的文件就又是乱码了,在XP中上传文件,直接就是乱码,不知道是我哪里做错了?
快乐工作 快乐学习
nifi
帖子: 335
注册时间: 2005-06-12 12:23

补充一下

#10

帖子 nifi » 2008-08-15 18:58

以前我在另外一台服务器上安装610ser,vsftpd也是现在这个配置就没有乱码问题
locale都是en_US.UTF-8
快乐工作 快乐学习
angelus
帖子: 445
注册时间: 2007-08-27 17:31

#11

帖子 angelus » 2008-08-16 9:48

你那个是没有安装上,你把路径目录建立下,重新安装
你能学会世界上所有语言来叫一种鸟的名字,当你知道所有这些名字叫法后,却对这种鸟一无所知~
理查德-费曼
nifi
帖子: 335
注册时间: 2005-06-12 12:23

#12

帖子 nifi » 2008-08-17 0:54

确实如此,建立man8和man5目录就正常安装了,但还是有问题
1、你补充的情况里的第一个我也遇到了,修改/etc/init.d/vsftpd后正常,但通过xp直接上传中文文件,刷新后还是乱码。
2、之前有两个帐号的文件是通过cuteftp上传的,现在可以连接上,但是无法打开文件夹,提示我权限不够或者没有那个目录,只有在vsftpd.conf中把charset的两行设置注销掉重启服务才可以。
快乐工作 快乐学习
angelus
帖子: 445
注册时间: 2007-08-27 17:31

#13

帖子 angelus » 2008-08-18 7:34

第一个问题,我在xp的浏览器中使用ftp://192.168.0.1进入后,上传中文文件完全正常,xp中可以自由使用
第二个问题,因为以前你传的时候使用utf-8编码,所以设置charset后为gb2312,文件名是会乱码,所以你找不到那个目录是很正常的,当你去掉后就正常了,建议你删除后,从新上传
你能学会世界上所有语言来叫一种鸟的名字,当你知道所有这些名字叫法后,却对这种鸟一无所知~
理查德-费曼
nifi
帖子: 335
注册时间: 2005-06-12 12:23

#14

帖子 nifi » 2008-08-18 11:12

还有一个问题,开头你说的/etc/init.d/vsftpd和/etc/vsftpd.conf两个文件在remove vsftpd之后还会存在,也确实如此,但是你给的附件中的/etc/init.d/vsftpd怎么和我的这个文件大小不一样?该用哪个呀?
快乐工作 快乐学习
nifi
帖子: 335
注册时间: 2005-06-12 12:23

#15

帖子 nifi » 2008-08-18 11:55

而且,确实超过2G的文件传不上去,传到2147483647就停了
快乐工作 快乐学习
回复