CentOS7安装搭建FTP服务器

通过WP在线安装主题或更新插件时,WP会通过FTP协议获取访问网页服务器的权限。

安装vsftpd

vsftpd(very secure FTP daemon)是一款在Linux发行版中最受推崇的FTP服务器程序。

yum -y install vsftpd
systemctl start vsftpd.service    #启动vsftpd
systemctl enable vsftpd.service    #设置vsftpd开机自启动

配置vsftpd

vim /etc/vsftpd/vsftpd.conf,修改如下参数,其他默认即可

#修改
anonymous_enable=NO    #禁止匿名访问
data_connection_timeout=5    #数据连接超时时间。如果在使用vsftpd上传下载碎小文件的时候容易发生超时中断的问题,将120改成5或者更小为佳

#使ftp用户始终在项目部署的根目录范围内,禁止访问系统其它文件
chroot_local_user=YES    #打开注释
chroot_list_enable=YES    #打开注释
chroot_list_file=/etc/vsftpd/chroot_list    #打开注释
allow_writeable_chroot=YES    #添加

#默认保持不变
xferlog_enable=YES    #启用上传和下载的日志功能。它可以对用户的操作进行日志记录,当出现问题的时候可以通过日志排查问题

如果/etc/vsftpd/chroot_list不存在,则需要创建该文件

vim /etc/vsftpd/chroot_list
:wq

配置完成重启vsftpd,systemctl restart vsftpd.service

创建FTP用户

添加名为ftpuser的用户,用户家目录为:/var/www/html,且禁止此用户登陆服务器:

useradd -d /var/www/html -s /sbin/nologin ftpuser
passwd ftpuser

调整防火墙

我用FileZilla登录,提示状态:服务器发回了不可路由的地址。使用服务器地址代替。错误:20 秒后无活动,连接超时。

CentOS7安装搭建FTP服务器_第1张图片
intercept.png

如果使用实体机安装为request-firewall-server,如果租赁的是VPS或ECS安装为requst-instance secure-firewall-server。我使用的阿里云ECS,请求的端口会先经过实例安全组规则,再通过防火墙。从安全角度看,当然两者都开启拦截最好,不过如果你开启安全组规则或防火墙其中一个也可以,我的防火墙就是未激活状态。

FTP有两种模式,主动模式和被动模式。由于两种模式使用的端口不一样,所以调整的内容也不一样。

FTP主动模式

以FileZilla为例,进入编辑-设置-连接-FTP,传输模式选择'主动';再进入被动模式,选择'退回到主动模式'。

  1. 如果未启动防火墙,就可以直接访问了
  2. 如果使用的是iptables防火墙。配置iptablesvim /etc/sysconfig/iptables,新加:
-A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT    #开放21端口

重启iptables,systemctl restart iptables.service

  1. 如果使用VPS或ECS,在安全组规则配置允许21端口访问。以阿里云为例,进入实例-管理-安全组-配置规则,在入方向添加21 port。

现在可以使用ftp cliet登陆ftp服务器了!

FTP被动模式(推荐使用)

以FileZilla为例,进入编辑-设置-连接-FTP,传输模式选择'被动';再进入被动模式,选择'使用服务器的外部IP地址来代替'。(默认选项)

  1. 编辑vsftpd的配置文件,vim /etc/vsftpd/vsftpd.conf
#修改
connect_from_port_20=NO    #关闭掉vsftpd的主动模式
#添加
pasv_enable=YES    #使vsftpd运行在被动模式
pasv_min_port=30000    #被动模式最小端口号30000
pasv_max_port=31000    #被动模式最大端口号31000

我这里选择的是30000-31000端口,可自行选择。保存配置文件并退出。重启vsftpd服务,systemctl restart vsftpd.service

  1. 如果使用的是iptables防火墙,编辑iptables配置文件,vim /etc/sysconfig/iptables,添加
-A INPUT -p tcp -m state --state NEW -m tcp --dport 21 -j ACCEPT    #开放ftp协议21端口
-A INPUT -p tcp --dport 30000:31000 -j ACCEPT    #开放30000-31000号端口

保存配置文件并退出。重启iptables服务,systemctl restart iptables.service

  1. 如果使用VPS或ECS,在安全组规则配置允许21和30000-31000端口访问。以阿里云为例,进入实例-管理-安全组-配置规则,在入方向添加21/21和30000/31000。

现在可以使用ftp cliet登陆ftp服务器了!

调整文件夹权限

使用ftp工具登陆服务器之后,发现不管创建什么都会失败。
这个问题主要是在服务器的文件夹权限设置上。以笔者为例,笔者将ftp服务器登陆后的默认文件夹设置为/var/www/html,登陆ftp之后上传什么文件都显示553 Could not create file。

cd /var/www
ll

可以看到html文件夹的权限是drwxr-xr-x。非root用户没有写的权限。

chmod 777 html    #开放最大权限

返回ftp工具,上传文件,一切正常!

参考链接

你可能感兴趣的:(CentOS7安装搭建FTP服务器)