目录
FTP(File Transfer Protocol)是一种文件传输协议,用来上传和下载,实现远程共享文件,和统一管理文件。FTP允许用户在两台计算机之间传输文件,其中一台计算机充当服务器,另一台计算机充当客户端。
无需经过授权可以连接到FTP服务器,匿名用户一般只能进行对服务器进行下载操作
在服务器安装过FTP服务的软件包后,可以看到本地的用户账号文件中多出了一个名为ftp的用户,该用户就是匿名用户

连接FTP时需要登录进行身份验证,授权用户通常权限比匿名用户高,比如下载和上传
服务端软件包名:vsftpd
客户端软件包名:ftp
准备两台CentOS 7 虚拟机,一台做服务器(192.168.10.101)一台做客户端(192.168.10.102)
关闭内核安全机制
![]()
关闭服务端的防火墙并安装服务端的FTP服务软件包
![]()
同时安装客户端的FTP服务软件包
![]()
先开启服务端的FTP服务
![]()
此时在客户端(102)就可以尝试连接服务器(101)

可以通过 exit、quit、bye 退出连接
![]()


当你在 /var/ftp FTP服务的根目录下创建一个文件,就可以在客户端通过 get 命令来下载该文件到连接服务器时所在目录位置下


或在末尾加入路径以指定下载时指定存放位置和名称
![]()
如果此时关闭客户端的防火墙,再连接FTP服务器
![]()
关闭被动模式,就进入了主动模式,再尝试下载文件,就可以在主动模式下下载文件了
所以主动模式还是被动模式都是由客户端决定的,而不是由服务器决定的

默认配置下的FTP服务,匿名用户是没有上传权限的
所以我们需要修改服务端的配置文件
为了讲解方便,这里去除了配置文件内注释的行,然后再打开FTP的配置文件


由于修改了配置文件需要重启服务
![]()
由于刚才只是修改了配置文件中的权限,但是在系统中对于文件和目录还有权限的控制
再修改系统中对于匿名用户进行操作的目录进行权限上的修改

使用put命令上传文件

通过 wget 客户端在不登录FTP的情况下直接下载FTP服务器中的文件

对授权用户的访问,仅限在该用户的家目录下
在服务端新建一个用户,用于在客户端进行授权用户的登录


重启服务
![]()
如果不设置上面两个选项,授权用户就可以通过在FTP服务器中使用 cd / 到系统的根目录,而修改完后只能cd 到 自己用户的根目录

修改ftp存放禁止登录用户的文件

将root注释或删除

编辑拒绝用户连接的列表文件
![]()
将root用户也注释掉

因为没有修改主配置文件,所以不用重启服务
此时就可以用root用户登录了

在vsftpd的配置文件(/etc/vsftpd/vsftpd.conf)中也可以看到用户列表启用的选项
把YES改为NO就不启用用户列表,列表文件就不会生效了
![]()
还可以添加一个选项:userlist_deny=NO,如果在启用用户列表的情况下,再添加该选项,FTP服务器只有用户列表中的用户可以访问
该选项默认为YES,也就是拒绝用户列表中的用户访问
![]()
在用户列表文件(/etc/vsftpd/user_list)内也能看到相关注释

vsftpd服务默认是通过Xinetd超级服务来进行管理,当有人访问vsftpd服务时,Xinetd就唤醒该服务,没人访问就让该服务休眠
如果要修改端口,不想让Xinetd来管理vsftpd服务,就打开监听选项,并添加监听的IP地址,指定访问vsftpd服务的IP地址,指定端口,取消ipv6的监听
修改vsftpd服务的配置文件

保存并退出,重启服务

此时在客户端(102)就需要指定端口来访问FTP服务
![]()
修改配置文件,添加相关选项
仅限于被动模式下,才分配指定端口号范围内的端口

保存并退出,重启服务

在服务端添加选项,指定目录

保存并退出,重启服务

在匿名用户的家目录下创建一个文件用于测试

此时登录到匿名用户也就进入了指定的家目录,创建的文件也能看到

在服务端的配置文件中添加选项

保存退出,重启服务

在客户端登录也可以看到测试的文件
