文章目录
第二个数据传输桥——FTP服务前言
在网上下载的时候,我们知道是通过20和21端口的ftp合约来完成的,所以本文将去了解FTP合约,学习如何搭建和配置FTP服务。
一、FTP 合约1.FTP 合约介绍
FTP(FileTransferProtocol,文件传输合约)是TCP/IP合约组中的合约之一。
2.FTP的作用
FTP 合约由两部分组成,第二部分是 FTP 服务器,第一部分是 FTP 客户端。 FTP 服务器用于存储文件,用户可以使用 FTP 客户端通过 FTP 合约访问位于 FTP 服务器上的资源。在开发网站时,一般会通过 FTP 合约将网页或程序传输到 Web 服务器上。据悉,由于 FTP 传输效率非常高,所以通常在 Internet 上传输大文件时使用该合约。
3.FTP的工作原理和模式
默认情况下,FTP 合约使用两个 TCP 端口,20 和 21,其中 20 用于传输数据c ftp下载文件到本地c ftp下载文件到本地,21 用于传输控制信息。而且,是否使用20作为数据传输的端口,与FTP使用的传输方式有关。如果使用主动模式,则数据传输端口为20;如果使用被动模式,最终要使用的具体端口需要服务器和客户端协商。 .
主动模式:服务器主动发起数据链路。要求客户端和服务器都打开和窃听同一个端口来创建连接,如果此时客户端有防火墙,会出现一些问题,所以这些模式不常用。
被动模式:服务器被动等待数据连接。只需要服务端监听一个端口,客户端可以在需要的时候连接。
二、FTP服务安装与配置
通常我们在Linux系统中使用vsftpd服务(verysecureFTPdaemon)来使用FTP服务。 vsftpd 是 Linux 发行版中最受推崇的 ftp 服务器程序之一。特点是细腻柔软,安全好用。它可以在Linux、BSD、Solaris、HP-UNIX等系统上运行。它是一个完全免费、开源的ftp服务器软件,支持许多其他ftp服务器不支持的功能。例如:安全要求特别高、带宽限制、扩展性好、可创建虚拟用户、支持IPv6、高速。
1.下载 vsftpd 服务
系统一开始没有vsftpd服务,需要yum下载:
有时候下载不成功会报错
此时只需删除文件/var/run/yum.pid;或者 kill-9 可以杀死被占用的进程。
2.配置 vsftpd 服务
只需要更改系统中的配置文件/etc/vsftpd/vsftpd.conf即可:
[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf
anonymous_enable=YES #开启匿名用户访问。默认已开启
write_enable=YES #开放服务器的写权限(若要上传,必须开启)。默认已开启
anon_umask=022 #设置匿名用户所上传数据的权限掩码(反掩码)。
anon_upload_enable=YES #允许匿名用户.上传文件。默认已注释,需取消注释
anon_mkdir_write_enable=YES #允许匿名用户创建(上传)目录。默认已注释,需取消注释
anon_other_write_enable=YES #允许删除、重命名、覆盖等操作。需添加
:wq #保存退出
[root@localhost ~]# chmod 777 /var/ftp/pub/ #为匿名访问ftp的根目录下的pub子目录设置最大权限,以 便匿名用户.上传数据
[root@localhost ~]# systemctl start vsftpd #开启vsftpd服务
[root@localhost ~]# systemctl stop firewalld #关闭防火墙
[root@localhost ~]# setenforce 0 #关闭核心防护
以上配置在Linux系统中完成。
3.通过windows测试ftp功能
在Windows系统下按WIN+R,然后输入cmd命令打开命令提示符。
然后在命令提示符界面执行以下操作:
ftp交互的命令有:
ftp>pwd#匿名访问ftp的根目录是Linux系统的/var/ftp/目录
ftp>ls#查看当前目录
ftp>cdpub#切换到pub目录
ftp>getfilename#下载文件到当前Windows本地目录
ftp>put filename#上传文件到ftp目录
ftp>退出#quit
4.设置本地用户认证访问ftp,严禁切换到/var/ftp以外的目录
同时更改配置文件/etc/vsftpd/vsftpd.conf
[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf
local_enable=Yes #启用本地用户
anonymous_enable=NO #关闭匿名用户访问
write_enable=YES #开放服务器的写权限(若要上传,必须开启)
local_umask=077 #可设置仅宿主用户拥有被上传的文件的权限(反掩码)
chroot_local_user=YES #将访问禁锢在用户的宿主目录中
allow_writeable_chroot=YES #允许被限制的用户主目录具有写权限
#anon_mkdir_write_enable=YES 注释
#anon_other_write_enable=YES 注释
[root@localhost ~]# systemctl restart vsftpd #重启服务
然后去windows测试一下
可以看到,当我们输入pwd的时候,即使是在根目录下也显示出来了,并且该目录下没有centos系统的根目录的内容,然后尝试切换到/etc目录看看是否成功:
可以看出我们切换到/etc目录失败。应该是我们已经设置了用户通过ftp登录的根目录为/var/ftp,但是进入其他目录失败。
5.更改默认根目录供匿名和本地用户登录
[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf
anon_root=/var/ftp #anon_root 针对匿名用户
local_root=/var/ftp #local_root针对系统用户
6.设置黑白名单
[root@localhost ~]# vim /etc/vsftpd/user_list #使用user_list用户列表文件
最后添加需要添加的用户,然后进入配置文件启用user_list用户列表文件:
[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf #修改配置文件
userlist_enable=YES #启用user_list用户列表文件
userlist_deny=NO #设置白名单,仅允许user_list用户列表文件的用户访问。默认为YES,为黑名单,禁用
结束