CentOS 7.9 vsftpd rpm包下载地址:http://rpmfind.net/linux/centos/7.9.2009/os/x86_64/Packages/vsftpd-3.0.2-28.el7.x86_64.rpm

1、安装vsftpd

rpm -ivh vsftpd-3.0.2-28.el7.x86_64.rpm

2、启动FTP服务 

目的:验证vsftpd是否安装成功

systemctl start vsftpd.service
---------------------------------------------------------------------------------------------------
3、查看FTP服务监听端口 

目的:验证vsftpd是否安装成功

netstat -antup | grep ftp
---------------------------------------------------------------------------------------------------
4、创建Linux用户

目的:添加一个Linux用户作为登录ftp服务器的用户
示例:adduser ftptest
ftptest字段可以为任何符合命名规则的你想要的用户名
---------------------------------------------------------------------------------------------------
5、修改Linux用户密码

目的:由于Linux新创建的用户,系统会自动给用户生成一个随机的密码,因此我们需要手动修改新用户的密码,来帮助我们登录,并且用作之后登录ftp服务器的密码
示例:passwd ftptest
ftptest字段为步骤4所指定的用户名
---------------------------------------------------------------------------------------------------
6、创建FTP服务使用的文件目录

目的:为FTP服务器创建一个工作使用的目录
示例:mkdir /var/ftp/test
可以创建在任何你想要的路径中
---------------------------------------------------------------------------------------------------
7、创建测试文件

目的:验证FTP服务器的权限是否正确配置,有时候配置文件没有配置正确,但是ftp服务器可以正常启动并且也能够正常访问,但是可能没有查看和读写权限,创建这个文件就是帮助排除可能会出现的配置文件配置出错的故障
示例:touch /var/ftp/test/testfile.txt
你需要在你命令6中的文件夹中创建文件
---------------------------------------------------------------------------------------------------
8、修改FTP目录拥有者

目的:给将来登录FTP服务器的用户(步骤4创建的用户)足够的修改权限,以防出现能够访问但是没有读写权限的错误
示例:chown -R ftptest:ftptest /var/ftp/test
将命令6创建的目录的拥有者设置为命令4创建的用户
将自己设置的用户名替换到上述的ftptest字段
---------------------------------------------------------------------------------------------------
9、修改vsftpd.conf配置文件

目的:配置正确的FTP服务器,所有的关于FTP服务器的配置都在下面这个文件
vim /etc/vsftpd/vsftpd.conf
---------------------------------------------------------------------------------------------------
10、修改下列参数(在步骤9中使用vim打开的文件):

注意事项:vsftpd配置文件的检查机制十分严格,多一个字符,多一个空格都会导致服务无法启动,少一个也一样(防杠),同时字母大小写也是严格检查的

#禁止匿名登录FTP服务器。
anonymous_enable=NO

目的:FTP支持以下三种认证模式:
匿名用户模式:任何人无需密码验证就可以直接登录到FTP服务器。这种模式最不安全,一般只用来保存不重要的公开文件,不推荐在生产环境中使用。
本地用户模式:通过Linux系统本地账号进行验证的模式,相较于匿名用户模式更安全。
虚拟用户模式:FTP服务器的专有用户。虚拟用户只能访问Linux系统为其提供的FTP服务,而不能访问Linux系统的其它资源,进一步增强了FTP服务器的安全性。

本次我们使用的是本地用户模式,因此需要禁止匿名登录,因为匿名用户牵扯到太多权限方面的问题,个人认为配置难度比本地用户模式更高更麻烦,所以选择本地用户模式进行配置

#允许本地用户登录FTP服务器。
local_enable=YES

目的:因为我们采用FTP三种认证模式的本地用户模式,所以需要允许本地用户登录FTP服务器

#监听IPv4 IP
listen=YES

目的:为了使用IPv4 IP能够访问服务器,所以需要打开监听
---------------------------------------------------------------------------------------------------
11、注释下列参数:
#关闭监听IPv6
#listen_ipv6=YES

目的:经过测试,同时开启IPv4监听和IPv6监听会导致服务不可用(无法开启服务),也可以将listen_ipv6的参数改成NO(listen_ipv6=NO)
---------------------------------------------------------------------------------------------------
12、在末尾新增参数:
设置本地用户登录后所在目录。
local_root=/var/ftp/test

目的:指定本地用户登陆后显示的目录,这里以步骤6创建的文件夹为例

全部用户被限制在主目录。
chroot_local_user=YES

目的:进一步增加安全性

启用例外用户名单。
chroot_list_enable=YES

目的:例外用户是赋予用户更高的权限,可以使用户不限制在步骤12中指定的目录,可以访问上层的目录

指定例外用户列表文件,列表中用户不被锁定在主目录。
chroot_list_file=/etc/vsftpd/chroot_list

目的:与上一条(启用例外用户名单)相呼应,只有在例外用户名单用的用户,才能拥有更高的权限

开启被动模式。
pasv_enable=YES
allow_writeable_chroot=YES

目的:FTP服务器有以下两种工作模式
主动模式:客户端向FTP服务器发送端口信息,由服务器主动连接该端口。
被动模式:FTP服务器开启并发送端口信息给客户端,由客户端连接该端口,服务器被动接受连接。
因为不太清楚什么是主动模式,所以选择使用被动模式作为教学

设置IP地址和数据传输端口
pasv_address=FTP服务器IP地址
pasv_min_port=50000
pasv_max_port=50010

目的:pasv_min_port和pasv_max_port参数设置数据传输的最小端口值和最大端口值,FTP端口是21端口,但是传输数据的端口可以设置为其他的端口,这里示例设置的端口范围为50000至50010,也就是在进行文件传输的时候会使用这些端口进行

保存文档,退回到命令行(终端)
---------------------------------------------------------------------------------------------------
13、创建chroot_list
vim /etc/vsftpd/chroot_list

目的:与步骤12的启用例外用户名单相呼应,没有例外用户时,也必须创建chroot_list文件,内容可为空。
---------------------------------------------------------------------------------------------------
14、重启vsftpd
systemctl restart vsftpd.service

目的:修改完vsftpd配置文件之后需要重启服务才能生效,如果配置文件正确则不会弹出任何提示,如配置文件错误将会有两行英文出现
使用命令查看服务是否正常启动:
service vsftpd status
如果有running的绿色字样,则表示服务正常运行中,如果呈现有红色的字样,则表示服务没有正常运行
---------------------------------------------------------------------------------------------------
15、关闭防火墙
systemctl stop firewalld

目的:暂时关闭防火墙,防止防火墙阻碍端口通信,开放所有通信端口(不建议操作,该操作十分危险)
---------------------------------------------------------------------------------------------------
16、永久关闭防火墙
service  iptables stop

目的:永久关闭防火墙,永久防止防火墙阻碍通信,开放所有通信端口(不建议操作,该操作十分危险)
---------------------------------------------------------------------------------------------------
17、正确的开放防火墙的方式
注意:如果已经执行了步骤15和步骤16,可以跳过此步骤
firewall-cmd --permanent --zone=public --add-port=50000-50010/tcp
firewall-cmd --permanent --zone=public --add-port=50000-50010/udp
firewall-cmd --permanent --zone=public --add-port=21/tcp
firewall-cmd --permanent --zone=public --add-port=21/udp
firewall-cmd --reload
---------------------------------------------------------------------------------------------------
18、关闭selinux
vim /etc/selinux/config
将SELINUX的值修改为disabled 重启后生效

目的:这是一个很烦人的东西,暂时没有了解其具体作用,总是这玩意儿开着,在进行一些操作时会出现一些奇奇怪怪的报错,按照步骤关掉就可以了√
---------------------------------------------------------------------------------------------------
19、临时关闭selinux
setenforce 0
注:如果执行了步骤18并且重启了你的服务器,可以不需要进行此步骤
---------------------------------------------------------------------------------------------------
20、自己想办法验证是否成功,不想打字了,太困了,这应该谁都会吧?
---------------------------------------------------------------------------------------------------
附录:vsftpd.conf 参数说明

用户登录控制参数说明如下表所示。
anonymous_enable=YES 接受匿名用户
no_anon_password=YES 匿名用户login时不询问口令
anon_root=(none) 匿名用户主目录
local_enable=YES 接受本地用户
local_root=(none) 本地用户主目录

用户权限控制参数说明如下表所示。
write_enable=YES 可以上传文件(全局控制)
local_umask=022 本地用户上传的文件权限
file_open_mode=0666 上传文件的权限配合umask使用
anon_upload_enable=NO 匿名用户可以上传文件
anon_mkdir_write_enable=NO 匿名用户可以建目录
anon_other_write_enable=NO 匿名用户修改删除
chown_username=lightwiter 匿名上传文件所属用户名

FTP支持以下三种认证模式:
匿名用户模式:任何人无需密码验证就可以直接登录到FTP服务器。这种模式最不安全,一般只用来保存不重要的公开文件,不推荐在生产环境中使用。
本地用户模式:通过Linux系统本地账号进行验证的模式,相较于匿名用户模式更安全。
虚拟用户模式:FTP服务器的专有用户。虚拟用户只能访问Linux系统为其提供的FTP服务,而不能访问Linux系统的其它资源,进一步增强了FTP服务器的安全性。

FTP支持以下三种认证模式:
匿名用户模式:任何人无需密码验证就可以直接登录到FTP服务器。这种模式最不安全,一般只用来保存不重要的公开文件,不推荐在生产环境中使用。
本地用户模式:通过Linux系统本地账号进行验证的模式,相较于匿名用户模式更安全。
虚拟用户模式:FTP服务器的专有用户。虚拟用户只能访问Linux系统为其提供的FTP服务,而不能访问Linux系统的其它资源,进一步增强了FTP服务器的安全性。