数据传输大桥——FTP服务

数据传输大桥——FTP服务

前言

平时在网上进行下载时,我们知道是通过20和21端口的ftp协议来进行,那么本篇就要去了解FTP协议和学习如何去搭建和配置FTP服务。

一、FTP协议

1.FTP协议简介

FTP(File Transfer Protocol,文件传输协议) 是 TCP/IP 协议组中的协议之一。

2.FTP的作用

FTP协议包括两个组成部分,其一为FTP服务器,其二为FTP客户端。其中FTP服务器用来存储文件,用户可以使用FTP客户端通过FTP协议访问位于FTP服务器上的资源。在开发网站的时候,通常利用FTP协议把网页或程序传到Web服务器上。此外,由于FTP传输效率非常高,在网络上传输大的文件时,一般也采用该协议。

3.FTP的工作原理和模式

默认情况下FTP协议使用TCP端口中的 20和21这两个端口,其中20用于传输数据,21用于传输控制信息。但是,是否使用20作为传输数据的端口与FTP使用的传输模式有关,如果采用主动模式,那么数据传输端口就是20;如果采用被动模式,则具体最终使用哪个端口要服务器端和客户端协商决定。

主动模式:服务器主动发起数据链接。要求客户端和服务器端同时打开并且监听同一个端口以创建连接,如果此时客户端设置了防火墙就会产生一些问题,因此这种模式不常用。

被动模式:服务器被动等待数据连接。只要求服务器端监听一个端口,客户端需要时连接即可。

二、FTP服务的安装与配置

一般我们使用FTP服务在Linux系统中用的是vsftpd服务(very secure FTP daemon)。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> cd pub #切换到pub目录

ftp> get 文件名 #下载文件到当前Windows本地目录

ftp> put 文件名 #上传文件到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,为黑名单,禁用

END

猜你喜欢

转载自blog.csdn.net/tu464932199/article/details/125321876