linux上安装FTP服务

Mar 17, 2017


前言

自己经常使用虚拟机做各种开发测试,每次安装好虚拟机后都需要配置环境,安装各种软件,有时候虚拟机的网络并不怎么样,甚至根本不能上网,为了上传和下载文件到虚拟机,一般就是使用ftp了。

同样可以实现文件传输的有:

  • SecureXFTP:很好用,上传下载很方便,不需要在服务端安装什么程序,缺点是要收费。
  • puttyPSFTP:开源免费,但是只能用指令操作,并且没有指令自动完成,用起来不是很方便。

上面两个工具都可以实现在宿主机的window和虚拟机的文件交互,如果不想的window上安装软件的话,可以使用window自带的ftp命令来实现。

不过本质上和使用PSFTP是一样的,也是只能使用指令,没有UI,并且没有命令自动完成。

虚拟机的操作系统是CentOS7

安装FTP服务

  • 检查是否已按安装FTP服务:
$> rpm -qa|grep vsftpd

如果出现ru如下结果说明已安装:

$> rpm -qa|grep vsftpd
vsftpd-3.0.2-21.el7.x86_64

如果还没安装,那就使用如下命令安装:

$> yum install vsftpd
  • 配置FTP服务

修改/etc/vsftpd/vsftpd.conf文件:

$> vim /etc/vsftpd/vsftpd.conf

检查如下几个配置项:

local_enable=YES
write_enable=YES
local_umask=022
pam_service_name=vsftpd
userlist_enable=YES

确认上述配置即可。

注意: 如果需要配置不允许用户修改FTP目录的话,可以使用chroot_local_user=YES这个配置,默认情况下这个配置是注释掉的,打开这个配置的话,需要指定ftp的根目录并且该目录必须是不可写的状态。

配置防火墙

作为测试用的虚拟机,一般直接关闭防火墙就行了:

$> service iptables stop

如果不想关闭防火墙,则需要添加FTP模块和开放ftp端口21到防火墙:

  • 添加ip_conntrack_ftp模块
$> vim /etc/sysconfig/iptables-config

添加如下一行:

IPTABLES_MODULES="ip_conntrack_ftp"
  • 打开21端口
$> vim /etc/sysconfig/iptables

添加

-A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT
  • 重启防火墙
$> service iptables restart

启动FTP服务

配置全部完成,现在可以启动FTP服务了。

  • 设置FTP开机自启动:
$> chkconfig vsftpd on
  • 启动FTP服务:
$> service vsftpd start

在CentOS7下,也可以使用:

$> systemctl restart vsftpd.service

来启动。

关闭SELinux

启动FTP之后,在window的cmd终端下输入:

C:> ftp ${ip}

连接FTP,此时可能会出现了错误503,应该是selinux设置的问题,使用如下命令检查:

$> getsebool -a |grep ftp

allow_ftpd_anon_write --> off
allow_ftpd_full_access --> off
allow_ftpd_use_cifs --> off
allow_ftpd_use_nfs --> off
allow_tftp_anon_write --> off
ftp_home_dir --> off
ftpd_connect_db --> off
ftpd_disable_trans --> off
ftpd_is_daemon --> on
httpd_enable_ftp_server --> off

我们只要打开ftp_home_dir的值开启为on,allow_ftpd_full_access也一同开启即可。

$> setsebool -P ftp_home_dir 1
$> setsebool -P allow_ftpd_full_access 1

至此应该可以连接了。