centos ftpusers centos远程桌面软件
大家好,感谢邀请,今天来为大家分享一下centos ftpusers的问题,以及和centos远程桌面软件的一些困惑,大家要是还不太明白的话,也没有关系,因为接下来将为大家分享,希望可以帮助到大家,解决大家的问题,下面就开始吧!
centos怎么上传文件
使用Vsftpd服务传输文件。
你可以配置一个vsftpd服务,具体步骤参考如下:
[root@linuxprobe~]# yum install vsftpd-y
Loaded plugins: langpacks, product-id, subscription-manager
………………省略部分输出信息………………
=
iptables防火墙管理工具中默认禁止了ftp传输协议的端口号,因此咱们在正式配置vsftpd服务程序前还需要清空一下iptables防火墙的默认策略,并将当前已经被清理的防火墙策略状态保存下来:
[root@linuxprobe~]# iptables-F
[root@linuxprobe~]# service iptables save
iptables: Saving firewall rules to/etc/sysconfig/iptables:[ OK ]
vsftpd服务程序的主配置文件(/etc/vsftpd/vsftpd.conf)中参数总共有123行左右,但大多数都是以#(井号)开头的注释信息,咱们可以用grep命令的-v参数来过滤并反选出没有包含#(井号)的参数行,也就是把所有的注释信息都过滤掉,这样再通过输出重定向符写会到原始的主配置文件名称中即可:
[root@linuxprobe~]# mv/etc/vsftpd/vsftpd.conf/etc/vsftpd/vsftpd.conf_bak
[root@linuxprobe~]# grep-v"#"/etc/vsftpd/vsftpd.conf_bak>/etc/vsftpd/vsftpd.conf
[root@linuxprobe~]# cat/etc/vsftpd/vsftpd.conf
anonymous_enable=YES
l
刘遄老师给同学们整理出了vsftpd服务程序的主配置文件中常用的参数及作用介绍,您现在只要简单的浏览一下,接下来的实验中如果不明白再过来查阅就可以。
编辑
参数作用
listen=[YES|NO]是否以独立运行的方式监听服务。
listen_address=IP地址设置要监听的IP地址。
listen_port=21设置FTP服务的监听端口。
download_enable=[YES|NO]是否允许下载文件。
userlist_enable=[YES|NO]
userlist_deny=[YES|NO]是否启用“禁止登陆用户名单”。
max_clients=0最大客户端连接数,0为不限制。
max_per_ip=0同一IP地址最大连接数,0位不限制。
anonymous_enable=[YES|NO]是否允许匿名用户访问。
anon_upload_enable=[YES|NO]是否允许匿名用户上传文件。
anon_umask=022匿名用户上传文件的umask值。
anon_root=/var/ftp匿名用户的FTP根目录。
anon_mkdir_write_enable=[YES|NO]是否允许匿名用户创建目录。
anon_other_write_enable=[YES|NO]是否开放匿名用户其他写入权限。
anon_max_rate=0匿名用户最大传输速率(字节),0为不限制。
local_enable=[YES|NO]是否允许本地用户登陆FTP。
local_umask=022本地用户上传文件的umask值。
local_root=/var/ftp本地用户的FTP根目录。
chroot_local_user=[YES|NO]是否将用户权限禁锢在FTP目录,更加的安全。
local_max_rate=0本地用户最大传输速率(字节),0为不限制。
11.2 Vsftpd服务程序
vsftpd作为更加安全的FTP文件传输协议的服务程序,可以让用户分别通过匿名开放、本地用户和虚拟用户三种身份验证方式来登陆到FTP服务器上面,匿名开放是一种最不安全的验证模式,任何人都可以无需密码验证就登陆到FTP服务端主机,本地用户是通过Linux系统本地的帐号密码信息进行的验证模式,这种模式相比较匿名开放模式来说比较安全,配置起来也十分简单,不过如果被骇客暴力破解出FTP帐号信息,也就可以通过这个口令登陆到咱们的服务器系统中了,从而完全控制整台服务器主机,最后的虚拟用户是相比较最为安全的验证模式,需要为FTP传输服务单独建立用户数据库文件,虚拟出用来口令验证的帐户信息,这些帐号是在服务器系统中不存在的,仅供FTP传输服务做验证使用,因此这样即便骇客破解出了帐号口令密码后也无法登录到咱们的服务器主机上面,有效的降低了破坏范围和影响。
ftp命令是用来在命令行终端中对ftp传输服务进行控制连接的客户端工具,咱们需要先手动的安装一下这个ftp客户端工具,以便于接下来的实验中校验效果:
[root@linuxprobe~]# yum install ftp
Loaded plugins: langpacks, product-id, subscription-manager
………………省略部分输出信息………………
Installing:
ftp x86_64 0.17-66.el7 rhel 61 k
Transaction Summary
================================================================================
Install 1 Package
Total download size: 61 k
Installed size: 96 k
Is this ok [y/d/N]: y
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Installing: ftp-0.17-66.el7.x86_64 1/1
Verifying: ftp-0.17-66.el7.x86_64 1/1
Installed:
ftp.x86_64 0:0.17-66.el7
Complete!
11.2.1匿名访问模式
vsftpd服务程序中匿名开放是一种最不安全的验证模式,任何人都可以无需密码验证就登陆到FTP服务端主机,这种模式一般只用来保存不重要的公开文件,尤其是在生产环境中更要注意不放敏感文件,当然也非常推荐用咱们第八章中学习的防火墙管理工具(例如Tcp_wrappers)将vsftpd服务程序的允许访问主机范围设置为企业内网,这样还算能够保证基本的安全性。
vsftpd服务程序默认已经开启了匿名访问模式,咱们需要做的就是进一步允许匿名用户的上传、下载文件的权限,以及让匿名用户能够创建、删除、更名文件的权限,这些权限对于匿名用户来讲非常的危险,咱们只是为了练习Linux系统中vsftpd服务程序的配置能力,十分不推荐在生产环境中使用,匿名用户的权限参数及介绍:
编辑
参数作用
anonymous_enable=YES允许匿名访问模式。
anon_umask=022匿名用户上传文件的umask值。
anon_upload_enable=YES允许匿名用户上传文件
anon_mkdir_write_enable=YES允许匿名用户创建目录
anon_other_write_enable=YES允许匿名用户修改目录名或删除目录
[root@linuxprobe~]# vim/etc/vsftpd/vsftpd.conf
anonymous_enable=YES
anon_umask=022
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=NO
listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
确认参数填写正确后保存并退出vsftpd服务程序的主配置文件,还需要重启vsftpd服务程序来让新的配置服务参数生效,并且同学们在生产环境中或者红帽RHCSA、RHCE、RHCA认证考试中也请记得一定要把配置过的服务程序加入到开机启动项中,以保证下次服务器重启后依然能够为用户正常提供ftp文件传输服务:
[root@linuxprobe~]# systemctl restart vsftpd
[root@linuxprobe~]# systemctl enable vsftpd
ln-s'/usr/lib/systemd/system/vsftpd.service''/etc/systemd/system/multi-user.target.wants/vsftpd.service
这样咱们就可以在客户端上面使用ftp命令连接到远程的FTP服务器上面了,FTP服务的匿名开放模式的帐号统一为anonymous,密码为空。匿名模式登陆到FTP服务器后默认所在位置为/var/ftp目录,咱们可以切换至里面的pub目录中,然后尝试创建一个新的目录文件来检验是否已经有了写入权限:
[root@linuxprobe~]# ftp 192.168.10.10
Connected to 192.168.10.10(192.168.10.10).
220(vsFTPd 3.0.2)
Name(192.168.10.10:root): anonymous
331 Please specify the password.
Password:此处敲击回车即可
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> cd pub
250 Directory successfully changed.
ftp> mkdir files
550 Permission denied.
刚刚咱们已经把iptables防火墙策略清空,而且也在vsftpd服务程序的主配置文件中添加了允许匿名用户创建目录和写入文件的权限,那么为什么还会被拒绝呢?建议同学们先不要往下面看,思考后用自己的方法尝试解决下这个问题,长期这样您的Linux系统排错能力就一定会练出来的。
回想起前面操作的细节,咱们FTP服务的匿名开放模式是默认登陆到了/var/ftp目录中,查看下这个目录的权限后才发现原来只有root管理员用户才有写入权限的,怪不得会提示写入出错呢,咱们只需要把目录的所有者身份改成系统帐户ftp即可,这样就应该可以了吧~
[root@linuxprobe~]# ls-ld/var/ftp/pub
drwxr-xr-x. 3 root root 16 Jul 13 14:38/var/ftp/pub
[root@linuxprobe~]# chown-Rf ftp/var/ftp/pub
[root@linuxprobe~]# ls-ld/var/ftp/pub
drwxr-xr-x. 3 ftp root 16 Jul 13 14:38/var/ftp/pub
[root@linuxprobe~]# ftp 192.168.10.10
Connected to 192.168.10.10(192.168.10.10).
220(vsFTPd 3.0.2)
Name(192.168.10.10:root): anonymous
331 Please specify the password.
Password:此处敲击回车即可
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> cd pub
250 Directory successfully changed.
ftp> mkdir files
550 Create directory operation failed.
又报错了!!此时再次使用ftp命令登入到FTP服务器主机后依然会提示写入操作失败,但细心的同学一定发现报错信息已经产生了变化,在刚刚没有写入权限的时候提示说权限拒绝(Permission denied.)所以咱们怀疑是权限的问题,但现在是提示创建目录的操作失败(Create directory operation failed.)那么咱们同学应该也能马上意识到是SELinux服务在限制这个操作了吧,查看下所有与ftp相关的SELinux域策略有那些吧:
[root@linuxprobe~]# getsebool-a| grep ftp
ftp_home_dir--> off
ftpd_anon_write--> off
ftpd_connect_all_unreserved--> off
ftpd_connect_db--> off
ftpd_full_access--> off
ftpd_use_cifs--> off
ftpd_use_fusefs--> off
ftpd_use_nfs--> off
ftpd_use_passive_mode--> off
httpd_can_connect_ftp--> off
httpd_enable_ftp_server--> off
sftpd_anon_write--> off
sftpd_enable_homedirs--> off
sftpd_full_access--> off
sftpd_write_ssh_home--> off
tftp_anon_write--> off
tftp_home_dir--> off
根据策略的名称和经验可以猜测出是哪一条规则策略,咱们在设置的时候请记得使用-P参数来让配置过的策略永久生效,保证在服务器重启后依然能够顺利写入文件,咱们可以分别尝试下创建目录文件、对文件进行改名以及删除目录文件等等操作。最后,恭喜同学们完成了这个实验课程,建议您在进行一次实验课程前还原虚拟机到最初始的状态,以免多个配置参数之间产生冲突。
[root@linuxprobe~]# setsebool-P ftpd_full_access=on
[root@linuxprobe~]# ftp 192.168.10.10
Connected to 192.168.10.10(192.168.10.10).
220(vsFTPd 3.0.2)
Name(192.168.10.10:root): anonymous
331 Please specify the password.
Password:此处敲击回车即可
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> cd pub
250 Directory successfully changed.
ftp> mkdir files
257"/pub/files" created
ftp> rename files database
350 Ready for RNTO.
250 Rename successful.
ftp> rmdir database
250 Remove directory operation successful.
ftp> exit
221 Goodbye.
11.2.2本地用户模式
本地用户模式是通过Linux系统本地的帐号密码信息进行的验证方式,这种模式相比较匿名开放模式来说比较安全,不过如果被骇客暴力破解出FTP帐号信息,也就可以通过这个口令登陆到咱们的服务器系统中了,从而完全控制整台服务器主机。本地用户模式配置起来十分简单,而且既然本地用户模式确实要比匿名开放模式更加的安全,因此推荐既然开启了本地用户模式,就把匿名开放模式给关闭了吧~咱们对本地用户模式需要使用的权限参数及介绍如下表:
编辑
参数作用
anonymous_enable=NO禁止匿名访问模式。
local_enable=YES允许本地用户模式。
write_enable=YES设置可写入权限。
local_umask=022本地用户模式创建文件的umask值。
userlist_deny=YES参数值为YES即禁止名单中的用户,参数值为NO则代表仅允许名单中的用户。
userlist_enable=YES允许“禁止登陆名单”,名单文件为ftpusers与user_list。
[root@linuxprobe~]# vim/etc/vsftpd/vsftpd.conf
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=NO
listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
当咱们确认参数信息已经填写正确就可以保存退出了,要想让新的配置参数生效还要记得重启一下vsftpd服务程序,并且在刚刚实验后还原了虚拟机的同学还请记得再把配置的服务加入到开机启动项中,让咱们的vsftpd服务程序在重启后依然能够正常使用。
[root@linuxprobe~]# systemctl restart vsftpd
[root@linuxprobe~]# systemctl enable vsftpd
ln-s'/usr/lib/systemd/system/vsftpd.service''/etc/systemd/system/multi-user.target.wants/vsftpd.service
按道理来说咱们现在就已经可以使用本地用户登陆到FTP服务器中了,但使用root用户登陆后会提示如下的错误信息:
[root@linuxprobe~]# ftp 192.168.10.10
Connected to 192.168.10.10(192.168.10.10).
220(vsFTPd 3.0.2)
Name(192.168.10.10:root): root
530 Permission denied.
Login failed.
ftp>
在咱们输入root管理员用户的密码前就已经提示被拒绝了,看来有什么东西再禁止着用户登陆,这是因为咱们vsftpd服务程序目录中默认存在着两个文件(ftpusers或user_list),这两个文件叫做禁止用户名单,不知道同学们有没有看过一个叫做“死亡笔记”的日本电影,里面就提到有一个黑色封皮的小本本,任何人的名字写进去都会死亡,其实咱们在配置的这个vsftpd服务程序的禁止文件也有类似的功能,只要里面写有某个用户的名字,那么就不再允许这个用户登陆到咱们的FTP服务器上面。
具体步骤参考文档:,可以部署一个vsftpd服务
CentOS64中出现Vsftpd中文乱码解决过程
Windows客户端访问FTP应用服务器出现乱码。这是由于UTF-8与GBK不兼容而头疼的引起的,采用源码方式编译安装就可将此问题解决。
乱码解决过程:
1、首先使用 rpm-e vsftpd卸载系统安装的默认VSFTPD应用服务器:
[root@localhost~]# rpm-e vsftpd
2、从网站下载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客户端字符集兼容原因导致的乱码问题。
CentOS 6.4中出现Vsftpd中文乱码解决过程
Windows客户端访问FTP应用服务器出现乱码。这是由于UTF-8与GBK不兼容而头疼的引起的,采用源码方式编译安装就可将此问题解决。
乱码解决过程:
1、首先使用 rpm-e vsftpd卸载系统安装的默认VSFTPD应用服务器:
[root@localhost~]# rpm-e vsftpd
2、从网站下载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客户端字符集兼容原因导致的乱码问题。