热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

CentOS6.4系统解决vsFTPd中文乱码的问题

一、系统简介:单位前期FTP使用REDHAT公司提供的RHEL5.5操作系统,升级后操作系统为CentOS6.4。二、乱码解决过程1、首先使用rpm-evsftpd卸载系统安装的默认VSFTPD应用服务器:[root@localhost~]#rpm-evsftpd2、从http://vault.centos.org/6

一、系统简介:单位前期FTP使用REDHAT公司提供的RHEL5.5操作系统,升级后操作系统为CentOS6.4。

二、乱码解决过程

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客户端字符集兼容原因导致的乱码问题。


推荐阅读
  • 本文介绍了SIP(Session Initiation Protocol,会话发起协议)的基本概念、功能、消息格式及其实现机制。SIP是一种在IP网络上用于建立、管理和终止多媒体通信会话的应用层协议。 ... [详细]
  • 我的读书清单(持续更新)201705311.《一千零一夜》2006(四五年级)2.《中华上下五千年》2008(初一)3.《鲁滨孙漂流记》2008(初二)4.《钢铁是怎样炼成的》20 ... [详细]
  • 调试利器SSH隧道
    在开发微信公众号或小程序的时候,由于微信平台规则的限制,部分接口需要通过线上域名才能正常访问。但我们一般都会在本地开发,因为这能快速的看到 ... [详细]
  • CentOS下ProFTPD的安装与配置指南
    本文详细介绍在CentOS操作系统上安装和配置ProFTPD服务的方法,包括基本配置、安全设置及高级功能的启用。 ... [详细]
  • 本文详细介绍如何在华为鲲鹏平台上构建和使用适配ARM架构的Redis Docker镜像,解决常见错误并提供优化建议。 ... [详细]
  • 本文详细介绍了如何使用Heartbeat构建一个高可用性的Apache集群,包括安装、配置和测试步骤。 ... [详细]
  • CentOS7通过RealVNC实现多人使用服务器桌面
    背景:公司研发团队通过VNC登录到CentOS服务器的桌面实现软件开发工作为防止数据外泄,需要在RealVNC设置禁止传输文件、访问粘贴板等策略过程&# ... [详细]
  • Centos7 Tomcat9 安装笔记
    centos7,tom ... [详细]
  • 本文详细介绍了如何在 CentOS 7 及其衍生发行版(如 Red Hat, Oracle, Scientific Linux 7)上安装和完全卸载 GitLab。包括安装必要的依赖关系、配置防火墙、安装 GitLab 软件包以及常见问题的解决方法。 ... [详细]
  • 本文介绍了在 CentOS 7 系统中如何查看所有活动进程及其运行时间。通过使用 `netstat` 和 `ps` 命令,您可以轻松获取进程的详细信息,包括启动时间、用户、终端和命令等。 ... [详细]
  • centos 7.0 lnmp成功安装过程(很乱)
    下载nginx[rootlocalhostsrc]#wgethttp:nginx.orgdownloadnginx-1.7.9.tar.gz--2015-01-2412:55:2 ... [详细]
  • Linux 防火墙与端口管理必备命令
    在使用 Linux 系统进行服务部署和问题排查时,防火墙和端口管理是不可或缺的操作。本文将详细介绍如何查看防火墙状态、端口占用情况,以及如何开放和关闭端口,帮助初学者更好地掌握这些技能。 ... [详细]
  • Nacos 0.3 数据持久化详解与实践
    本文详细介绍了如何将 Nacos 0.3 的数据持久化到 MySQL 数据库,并提供了具体的步骤和注意事项。 ... [详细]
  • 在 CentOS 6.4 上安装 QT5 并启动 Qt Creator 时,可能会遇到缺少 GLIBCXX_3.4.15 的问题。这是由于系统中的 libstdc++.so.6 版本过低。本文将详细介绍如何通过更新 GCC 版本来解决这一问题。 ... [详细]
  • 2017年软件开发领域的七大变革
    随着技术的不断进步,2017年对软件开发人员而言将充满挑战与机遇。本文探讨了开发人员需要适应的七个关键变化,包括人工智能、聊天机器人、容器技术、应用程序版本控制、云测试环境、大众开发者崛起以及系统管理的云迁移。 ... [详细]
author-avatar
晕晕的劳拉
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有