服务器之家:专注于服务器技术及软件下载分享
分类导航

Linux|Centos|Ubuntu|系统进程|Fedora|注册表|Bios|Solaris|Windows7|Windows10|Windows11|windows server|

服务器之家 - 服务器系统 - Centos - CentOS 6.4中出现Vsftpd中文乱码解决过程

CentOS 6.4中出现Vsftpd中文乱码解决过程

2019-10-06 21:06CentOS教程网 Centos

这是由于UTF-8与GBK不兼容而头疼的引起的,采用源码方式编译安装就可将此问题解决,具体过程如下,感兴趣的朋友可以参考下

Windows客户端访问FTP应用服务器出现乱码。这是由于UTF-8与GBK不兼容而头疼的引起的,采用源码方式编译安装就可将此问题解决。 

乱码解决过程: 

1、首先使用 rpm -e vsftpd卸载系统安装的默认VSFTPD应用服务器: 

[root@localhost ~]# rpm -e vsftpd 

2、从http://vault.centos.org/6.3/updates/Source/SPackages/网站下载vsftpd-2.2.2-11.el6_3.1.src.rpm 源码包。 

3、使用 rpm -ivh vsftpd-2.2.2-11.el6_3.1.src.rpm 对该包进行安装: 

[root@localhost birdofprey]# rpm -ivh vsftpd-2.2.2-11.el6_3.1.src.rpm 

安装过程中系统会提示类似如下错误: 

warning: vsftpd-2.2.2-11.el6_3.1.src.rpm: Header V3 RSA/SHA1 Signature, key ID c105b9de: NOKEY 

1:vsftpd warning: user mockbuild does not exist - using root 

########################################### [100%] 

warning: user mockbuild does not exist - using root 

warning: group mockbuild does not exist - using root 

warning: user mockbuild does not exist - using root 

warning: group mockbuild does not exist - using root 

warning: user mockbuild does not exist - using root 

warning: group mockbuild does not exist - using root 

此时需要使用adduser mockbuild命令创建mockbuild用户: 

[root@localhost birdofprey]# adduser mockbuild 

4、重新使用rpm -ivh vsftpd-2.2.2-11.el6_3.1.src.rpm 对该包进行安装: 

[root@localhost birdofprey]# rpm -ivh vsftpd-2.2.2-11.el6_3.1.src.rpm 

warning: vsftpd-2.2.2-11.el6_3.1.src.rpm: Header V3 RSA/SHA1 Signature, key ID c105b9de: NOKEY 

1:vsftpd ########################################### [100%] 

5、使用命令 cd /root/ rpmbuild/SOURCES/vsftpd/SOURCES进入vsftpd源码包目录,并使用tar -zxvf vsftpd-2.2.2.tar.gz解压vsftpd-2.2.2.tar.gz源码包: 

[root@localhost SOURCES]# tar -zxvf vsftpd-2.2.2.tar.gz 

6、使用命令cd vsftdp-2.2.2进入vsfftpd-2.2.2源码目录: 

[root@localhost SOURCES]# cd vsftpd-2.2.2 

7、使用命令vi features.c修改 features.c文件;将行内容为:vsf_cmdio_write_raw(p_sess, " UTF8\r\n"); 

修改为://vsf_cmdio_write_raw(p_sess, " UTF8\r\n")。 

8、使用命令vi opts.c修改 opts.c文件; 

将handle_opts函数修改成如下: 
 

复制代码

代码如下:


void 
handle_opts(struct vsf_session* p_sess) 

str_upper(&p_sess->ftp_arg_str); 
//if (str_equal_text(&p_sess->ftp_arg_str, "UTF8 ON")) 
//{ 
//vsf_cmdio_write(p_sess, FTP_OPTSOK, "Always in UTF8 mode."); 
//} 
//else 
//{ 
//vsf_cmdio_write(p_sess, FTP_BADOPTS, "Option not understood."); 
//} 
}


9、返回上层目录并使用 tar -zcvf vsftpd-2.2.2.tar.gz vsftpd-2.2.2/命令重新压缩vsftpd-2.2.2.tar.gz文件: 

[root@localhost SOURCES]# tar -zcvf vsftpd-2.2.2.tar.gz vsftpd-2.2.2/ 

我们使用ls -命令可以看到列表中vsftpd-2.2.2.tar.gz文件创建时间已经为当前创建时间,如下所示: 
 

复制代码

代码如下:


-rw-rw-r--. 1 mockbuild mockbuild 186982 5月 3 15:39 vsftpd-2.2.2.tar.gz 
-rw-r--r--. 1 mockbuild mockbuild 2828 2月 13 00:06 vsftpd-2.2.2-uint-uidgid.patch 
-rw-r--r--. 1 mockbuild mockbuild 1640 2月 13 00:06 vsftpd-2.2.2-v6only.patch 
-rw-r--r--. 1 mockbuild mockbuild 514 2月 13 00:06 vsftpd-close-std-fds.patch 
-rwxr-xr-x. 1 mockbuild mockbuild 338 2月 13 00:06 vsftpd_conf_migrate.sh 
-rw-r--r--. 1 mockbuild mockbuild 125 2月 13 00:06 vsftpd.ftpusers 
-rwxr-xr-x. 1 mockbuild mockbuild 2824 2月 13 00:06 vsftpd.init 
-rw-r--r--. 1 mockbuild mockbuild 335 2月 13 00:06 vsftpd.pam 
-rw-r--r--. 1 mockbuild mockbuild 361 2月 13 00:06 vsftpd.user_list 
-rw-r--r--. 1 mockbuild mockbuild 345 2月 13 00:06 vsftpd.xinetd


10、进入源码包下的 SPECS目录,并使用rpmbuild -bb vsftpd.spec命令生成vsftpd-2.2.2-11.el6.1.x86_64.rpm: 

[root@localhost SPECS]# rpmbuild -bb vsftpd.spec 

此时因为系统缺少依赖包会报如下错误: 

error: Failed build dependencies: 

libcap-devel is needed by vsftpd-2.2.2-11.el6.1.x86_64 

tcp_wrappers-devel is needed by vsftpd-2.2.2-11.el6.1.x86_64 

我们可以从CentOS6.4安装盘中找到如下RPM软件包进行手动安装,包名如下: 

libattr-2.4.44-7.el6.i686.rpm libcap-devel-2.16-5.5.el6.x86_64.rpm 

libattr-2.4.44-7.el6.x86_64.rpm tcp_wrappers-devel-7.6-57.el6.i686.rpm 

libattr-devel-2.4.44-7.el6.i686.rpm tcp_wrappers-devel-7.6-57.el6.x86_64.rpm 

libattr-devel-2.4.44-7.el6.x86_64.rpm tcp_wrappers-libs-7.6-57.el6.i686.rpm 

libcap-2.16-5.5.el6.i686.rpm tcp_wrappers-libs-7.6-57.el6.x86_64.rpm 

libcap-2.16-5.5.el6.x86_64.rpm vsftpd-2.2.2-11.el6_3.1.src.rpm 

libcap-devel-2.16-5.5.el6.i686.rpm 

11、将以上各包使用rpm -ivh *.rpm -force --nodeps命令进行强制安装: 

[root@localhost rpm]# rpm -ivh *.rpm --force --nodeps 

warning: libattr-2.4.44-7.el6.i686.rpm: Header V3 RSA/SHA1 Signature, key ID c105b9de: NOKEY 

Preparing... ########################################### [100%] 

1:libattr ########################################### [ 8%] 

2:libcap ########################################### [ 17%] 

3:tcp_wrappers-libs ########################################### [ 25%] 

4:libattr ########################################### [ 33%] 

5:libcap ########################################### [ 42%] 

6:tcp_wrappers-libs ########################################### [ 50%] 

7:tcp_wrappers-devel ########################################### [ 58%] 

8:libcap-devel ########################################### [ 67%] 

9:libattr-devel ########################################### [ 75%] 

10:tcp_wrappers-devel ########################################### [ 83%] 

11:libcap-devel ########################################### [ 92%] 

12:libattr-devel ########################################### [100%] 

12、再次使用rpmbuild -bb vsftpd.spec对vsftpd-2.2.2-11.el6.1.x86_64.rpm包重新进行编译: 

[root@localhost SPECS]# rpmbuild -bb vsftpd.spec 

13、进入x86_64目录,此时可以看到该目录下已经生成相关RPM包: 

命令模式如下: 

复制代码

代码如下:


[root@localhost RPMS]# cd x86_64/ 
[root@localhost x86_64]# ls 
vsftpd-2.2.2-11.el6.1.x86_64.rpm vsftpd-debuginfo-2.2.2-11.el6.1.x86_64.rpm 


14、重新安装进行过源码修改的vsftpd应用服务器组件包: 

[root@localhost x86_64]# rpm -ivh vsftpd-2.2.2-11.el6.1.x86_64.rpm 

Preparing... ########################################### [100%] 

1:vsftpd ########################################### [100%] 

15、CentOS6.4修改系统默认字符集: 

[root@localhost /]# vi /etc/sysconfig/i18n 

将原文件修改为如下内容: 

复制代码

代码如下:


#LANG="zh_CN.UTF-8" 
LANG="zh_CN.GB18030" 
SUPPORTED="zh_CN.GB18030:zh_CN:zh:zh_CN.GB2312:en_US.UTF-8:en_US:en" 
SYSFONT="latarcyrheb-sun16" 


此时所有修改工作已经完成,重起FTP应用服务器之后我们在windows系统中使用IE浏览器以及前期应用软件进行测试中文乱码问题消失。该解决办法同样适用于RHEL6系列操作系统中存在的VSFTPD于windows客户端字符集兼容原因导致的乱码问题。

延伸 · 阅读

精彩推荐
  • Centoscentos不小心删除/root目录该如何解决?

    centos不小心删除/root目录该如何解决?

    一些朋友最近在问小编centos不小心删除/root目录该如何解决?今天小编就为大家分享centos不小心删除/root目录解决办法;希望对大家会有帮助,有需要的朋友...

    脚本之家8022019-05-29
  • CentosCentos 7开启网卡自动获取IP的详细方法

    Centos 7开启网卡自动获取IP的详细方法

    本篇文章主要介绍了Centos 7开启网卡自动获取IP的详细方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧...

    凌锋8972021-12-29
  • CentosCentOS下Uptime命令详解

    CentOS下Uptime命令详解

    在Linux下,我们可以使用uptime命令,而且此命令不必使用root权限。uptime命令在系统中已经默认安装了。今天小编为大家带来的是CentOS下Uptime命令详解;希望...

    CentOS之家11482019-06-19
  • Centoscentos 安装与操作方法

    centos 安装与操作方法

    这篇文章主要介绍了centos 安装与操作方法,需要的朋友可以参考下...

    centos之家5272019-07-11
  • CentosCentOS6.5下Redis安装与配置详细步骤

    CentOS6.5下Redis安装与配置详细步骤

    本篇文章主要介绍了CentOS6.5下Redis安装与配置详细步骤,详细介绍redis单机单实例安装与配置,服务及开机自启动。有兴趣的可以了解一下。...

    飞流11452021-12-24
  • CentosCentos7运用/dev/shm进行网站优化

    Centos7运用/dev/shm进行网站优化

    这篇文章主要介绍了LINUX中Centos7运用/dev/shm进行网站优化相关知识点,对此有兴趣的朋友参考学习下。...

    彬菌9912022-03-02
  • CentosCentOS 6.6实现永久修改DNS地址的方法

    CentOS 6.6实现永久修改DNS地址的方法

    这篇文章主要介绍了CentOS 6.6实现永久修改DNS地址的方法,涉及针对CentOS配置文件的相关设置技巧,具有一定参考借鉴价值,需要的朋友可以参考下 ...

    Linux社区4472020-08-21
  • CentosCentOS7设置日期和时间方法以及基本概念介绍

    CentOS7设置日期和时间方法以及基本概念介绍

    这篇文章主要介绍了CentOS7设置日期和时间方法以及基本概念介绍,本文讲解使用CentOS7中的新命令timedatectl设置日期时间方法,需要的朋友可以参考下 ...

    CentOS之家6522019-09-19